Databricks SQL'de akış tablolarını kullanarak veri yükleme
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 destek içeren Unity Kataloğu'na kayıtlı bir tablodur. Her akış tablosu için otomatik olarak bir Delta Live Tables 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ğıdaki gereksinimleri karşılamanız gerekir.
Çalışma alanı gereksinimleri:
- 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.
İşlem gereksinimleri:
Aşağıdakilerden birini kullanmanız gerekir:
Kanalı kullanan bir SQL ambarı
Current
.Databricks Runtime 13.3 LTS veya üzerinde paylaşılan erişim moduyla işlem.
Databricks Runtime 15.4 LTS veya üzerinde tek kullanıcı erişim moduyla işlem.
Databricks Runtime 15.3 ve altında, diğer kullanıcıların sahip olduğu akış tablolarını sorgulamak için tek kullanıcılı işlem kullanamazsınız. Databricks Runtime 15.3 ve altında tek kullanıcı işlemini yalnızca akış tablosunun sahibiyseniz kullanabilirsiniz. Tablonun oluşturucusu sahibidir.
Databricks Runtime 15.4 LTS ve üzeri, tablo sahipliği ne olursa olsun tek kullanıcı işlemlerinde Delta Live Tables tarafından oluşturulan tablolardaki sorguları destekler. Databricks Runtime 15.4 LTS ve üzerinde sağlanan veri filtrelemeden yararlanmak için, Delta Live Tables tarafından oluşturulan tabloları destekleyen veri filtreleme işlevi sunucusuz işlem üzerinde çalıştığından, çalışma alanınızın sunucusuz işlem için etkinleştirildiğini onaylamanız gerekir. Veri filtreleme işlemlerini çalıştırmak için tek kullanıcı işlemi kullandığınızda sunucusuz işlem kaynakları için ücretlendirilebilirsiniz. Bkz . Tek kullanıcı işlemlerinde ayrıntılı erişim denetimi.
İzin gereksinimleri:
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.
Diğer gereksinimler:
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.
Siz CREATE
veya REFRESH
bir akış tablosu, güncelleştirme işlemi sunucusuz Delta Live Tables işlem hattı kullanarak güncelleştirilir. Tanımladığınız her akış tablosunun ilişkili bir Delta Live Tables işlem hattı vardı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.