Databricks SQL'de akış tablolarını kullanarak veri yükleme
Önemli
Bu özellik Genel Önizlemededir. Erişim için kaydolmak için bu formu doldurun.
Databricks, Databricks SQL kullanarak veri almak için akış tablolarının kullanılmasını önerir. Akış tablosu, akış veya artımlı veri işleme için ek desteğe sahip unity Kataloğu yönetilen tablosudur. Her akış tablosu için otomatik olarak bir DLT işlem hattı oluşturulur. Kafka ve bulut nesne depolama alanından artımlı veri yükleme için akış tablolarını kullanabilirsiniz.
Bu makalede, Unity Kataloğu birimi (önerilen) veya dış konum olarak yapılandırılmış bulut nesne depolama alanından veri yüklemek için akış tablolarının kullanılması gösterilmektedir.
Not
Delta Lake tablolarını akış kaynakları ve havuzları olarak kullanmayı öğrenmek için bkz . Delta tablo akışı okuma ve yazma işlemleri.
Başlamadan önce
Başlamadan önce aşağıdakilere sahip olduğunuzdan emin olun:
Sunucusuz etkinleştirilmiş bir Azure Databricks hesabı. Daha fazla bilgi için bkz . Sunucusuz SQL ambarlarını etkinleştirme.
Unity Kataloğu'nu etkinleştirmiş bir çalışma alanı. Daha fazla bilgi için bkz . Unity Kataloğu'nu ayarlama ve yönetme.
Kanalı kullanan bir SQL ambarı
Current
.Delta Live Tables işlem hattı tarafından oluşturulan akış tablolarını sorgulamak için Databricks Runtime 13.1 ve üzerini veya SQL ambarı kullanarak paylaşılan bir küme kullanmanız gerekir. Unity Kataloğu etkin işlem hattında oluşturulan akış tabloları, atanan veya hiç yalıtım kümesinden sorgulanamaz.
READ FILES
Unity Kataloğu dış konumundaki ayrıcalık. Bilgi için bkz . Bulut depolama alanını Azure Databricks'e bağlamak için dış konum oluşturma.USE CATALOG
Akış tablosunu oluşturduğunuz katalogdaki ayrıcalık.USE SCHEMA
Akış tablosunu oluşturduğunuz şema üzerindeki ayrıcalık.CREATE TABLE
Akış tablosunu oluşturduğunuz şema üzerindeki ayrıcalık.Kaynak verilerinizin yolu.
Birim yolu örneği:
/Volumes/<catalog>/<schema>/<volume>/<path>/<file-name>
Dış konum yolu örneği:
abfss://myContainer@myStorageAccount.dfs.core.windows.net/analysis
Not
Bu makalede, yüklemek istediğiniz verilerin Unity Kataloğu birimine veya erişiminiz olan dış konuma karşılık gelen bir bulut depolama konumunda olduğu varsayılır.
Kaynak verileri bulma ve önizleme
Çalışma alanınızın kenar çubuğunda Sorgular'a ve ardından Sorgu oluştur'a tıklayın.
Sorgu düzenleyicisinde, açılan listeden
Current
kanalı kullanan bir SQL ambarı seçin.Kaynak verilerinizi tanımlayan bilgiler için değerleri açılı ayraçlara (
<>
) değiştirerek düzenleyiciye aşağıdakini yapıştırın ve çalıştır'a tıklayın.Not
İşlev için varsayılan değerler verilerinizi ayrıştıramıyorsa tablo değerli işlevini çalıştırırken
read_files
şema çıkarımı hatalarıyla karşılaşabilirsiniz. Örneğin, çok satırlı CSV veya JSON dosyaları için çok satırlı modu yapılandırmanız gerekebilir. Ayrıştırıcı seçeneklerinin listesi için bkz . tablo değerli işlevi read_files./* Discover your data in a volume */ LIST "/Volumes/<catalog>/<schema>/<volume>/<path>/<folder>" /* Preview your data in a volume */ SELECT * FROM read_files("/Volumes/<catalog>/<schema>/<volume>/<path>/<folder>") LIMIT 10 /* Discover your data in an external location */ LIST "abfss://<container>@<storage-account>.dfs.core.windows.net/<path>/<folder>" /* Preview your data */ SELECT * FROM read_files("abfss://<container>@<storage-account>.dfs.core.windows.net/<path>/<folder>") LIMIT 10
Akış tablosuna veri yükleme
Bulut nesne depolamadaki verilerden akış tablosu oluşturmak için, sorgu düzenleyicisine aşağıdakileri yapıştırın ve çalıştır'a tıklayın:
/* Load data from a volume */
CREATE OR REFRESH STREAMING TABLE <table-name> AS
SELECT * FROM STREAM read_files('/Volumes/<catalog>/<schema>/<volume>/<path>/<folder>')
/* Load data from an external location */
CREATE OR REFRESH STREAMING TABLE <table-name> AS
SELECT * FROM STREAM read_files('abfss://<container>@<storage-account>.dfs.core.windows.net/<path>/<folder>')
DLT işlem hattı kullanarak akış tablosunu yenileme
Bu bölümde, bir akış tablosunu sorguda tanımlanan kaynaklardan sağlanan en son verilerle yenilemeye yönelik desenler açıklanmaktadır.
CREATE
akış tablolarına yönelik işlemler, ilk veri oluşturma ve akış tablosuna yükleme işlemleri için databricks SQL ambarı kullanır. REFRESH
akış tablolarına yönelik işlemler Delta Live Tables (DLT) kullanır. Her akış tablosu için otomatik olarak bir DLT işlem hattı oluşturulur. Akış tablosu yenilendiğinde, yenilemeyi işlemek için DLT işlem hattına yönelik bir güncelleştirme başlatılır.
Komutu çalıştırdıktan REFRESH
sonra DLT işlem hattı bağlantısı döndürülür. Yenilemenin durumunu denetlemek için DLT işlem hattı bağlantısını kullanabilirsiniz.
Not
En son verileri almak için akış tablosunu yalnızca tablo sahibi yenileyebilir. Tabloyu oluşturan kullanıcı sahibidir ve sahip değiştirilemez.
Bkz . Delta Live Tables nedir?.
Yalnızca yeni verileri alma
Varsayılan olarak, read_files
işlev tablo oluşturma sırasında kaynak dizindeki tüm mevcut verileri okur ve ardından yeni gelen kayıtları her yenilemeyle işler.
Tablo oluşturma sırasında kaynak dizinde zaten var olan verilerin alımını önlemek için seçeneğini olarak false
ayarlayınincludeExistingFiles
. Bu, yalnızca tablo oluşturulduktan sonra dizine ulaşan verilerin işlendiği anlamına gelir. Örneğin:
CREATE OR REFRESH STREAMING TABLE my_bronze_table
AS SELECT *
FROM STREAM read_files(
'abfss://myContainer@myStorageAccount.dfs.core.windows.net/analysis/*/*/*.json',
includeExistingFiles => false)
Akış tablosunu tam olarak yenileme
Tam yenilemeler, kaynakta bulunan tüm verileri en son tanım ile yeniden işler. Verilerin geçmişinin tamamını tutmayan veya Kafka gibi kısa saklama süreleri olan kaynaklarda tam yenilemelerin çağrılması önerilmez çünkü tam yenileme mevcut verileri kısaltmaktadır. Veriler artık kaynakta kullanılamıyorsa eski verileri kurtaramayabilirsiniz.
Örneğin:
REFRESH STREAMING TABLE my_bronze_table FULL
Otomatik yenileme için akış tablosu zamanlama
Bir akış tablosunu tanımlı bir zamanlamaya göre otomatik olarak yenilenmek üzere yapılandırmak için, sorgu düzenleyicisine aşağıdakileri yapıştırın ve çalıştır'a tıklayın:
ALTER STREAMING TABLE
[[<catalog>.]<database>.]<name>
ADD [SCHEDULE [REFRESH]
CRON '<cron-string>'
[ AT TIME ZONE '<timezone-id>' ]];
Örneğin yenileme zamanlaması sorguları, bkz . ALTER STREAMING TABLE.
Yenilemenin durumunu izleme
Delta Live Tables kullanıcı arabiriminde akış tablosunu yöneten işlem hattını görüntüleyerek veya akış tablosunun komutu tarafından DESCRIBE EXTENDED
döndürülen Yenileme Bilgileri'ni görüntüleyerek akış tablosu yenilemesinin durumunu görüntüleyebilirsiniz.
DESCRIBE EXTENDED <table-name>
Kafka'dan akış alımı
Kafka'dan akış alımı örneği için bkz . read_kafka.
Kullanıcılara akış tablosuna erişim verme
Kullanıcılara SELECT
akış tablosunda sorgu edebilmeleri için ayrıcalık vermek için, sorgu düzenleyicisine aşağıdakileri yapıştırın ve çalıştır'a tıklayın:
GRANT SELECT ON TABLE <catalog>.<schema>.<table> TO <user-or-group>
Unity Kataloğu güvenliği sağlanabilir nesnelerinde ayrıcalık verme hakkında daha fazla bilgi için bkz . Unity Kataloğu ayrıcalıkları ve güvenliği sağlanabilir nesneler.
Sınırlama
- Databricks SQL akış tabloları Orta Güney ABD ve Batı ABD 2 bölgelerinde desteklenmez.