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 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 hedefleri olarak kullanmayı öğrenmek için Delta tablo akışı okuma ve yazma işlemleri bölümüne bakın.
Önemli
Databricks SQL'de oluşturulan akış tabloları sunucusuz DLT işlem hattı tarafından desteklenir. Bu işlevselliği kullanmak için çalışma alanınızın sunucusuz işlem hatlarını desteklemesi gerekir.
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:
- Bir SQL ambarı
Current
kanalını kullanan. - Databricks Runtime 13.3 LTS veya üzerinde standart erişim modu (eski adıyla paylaşılan erişim modu) ile işlem.
Databricks Runtime 15.4 LTS veya üzeri üzerinde özel erişim modu (eski adıyla tek kullanıcı erişim modu) ile hesaplama yap.
Databricks Runtime 15.3 ve öncesinde, diğer kullanıcıların sahip olduğu akış tablolarını sorgulamak için özel hesaplama kaynaklarını kullanamazsınız. Akış tablosuna sahipseniz, Databricks Runtime 15.3 ve altındaki ayrılmış hesaplama kaynaklarını kullanabilirsiniz. Tabloyu yaratan kişi sahibidir.
Databricks Runtime 15.4 LTS ve üzeri, tablo sahipliği ne olursa olsun, ayrılmış işlem kaynaklarında DLT'nin oluşturduğu tablolardaki sorguları destekler. Databricks Runtime 15.4 LTS ve üzerinde sağlanan veri filtrelemeden yararlanmak için, DLT 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 ayrılmış işlem kullandığınızda sunucusuz işlem kaynakları için ücretlendirilebilirsiniz. bkz. ayrılmış işlemde (eski adıyla tek kullanıcılı işlem) ayrıntılı erişim denetimi.
İzin gereksinimleri:
- Unity Kataloğu'nun dış konumundaki bir yetki. 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 izin. - Oluşturduğunuz akış tablosunun bulunduğu şema üzerindeki
USE SCHEMA
ayrıcalığı. -
CREATE TABLE
Akış tablosunu oluşturduğunuz şema üzerindeki ayrıcalık.
Diğer gereksinimler:
Kaynak veriye giden yol.
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, ardından Yeni 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 bilgileri sağlamak üzere açılı ayraçlardaki (
<>
) değerleri değiştirerek aşağıdakini düzenleyiciye yapıştırın ve ardından Çalıştır'a tıklayın.Not
İşlev için varsayılan değerler verilerinizi ayrıştıramıyorsa,
read_files
tablo değerli işlevi çalıştırdığınızda ş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.read_files
tablo değerli fonksiyonu./* 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>')
Çalışma zamanı kanalını ayarlama
SQL ambarları kullanılarak oluşturulan akış tabloları, DLT işlem hattı kullanılarak otomatik olarak yenilenir. DLT işlem hatları varsayılan olarak current
kanalında çalışma zamanını kullanır. Sürüm işlemi hakkında bilgi edinmek için bkz. DLT sürüm notları ve sürüm yükseltme işlemi.
Databricks, üretim iş yükleri için kanalın current
kullanılmasını önerir. Yeni özellikler ilk olarak preview
kanalına sunulur. Tablo özelliği olarak preview
belirterek yeni özellikleri test etmek için önizleme DLT kanalına bir işlem hattı ayarlayabilirsiniz. Tabloyu oluştururken veya bir ALTER deyimi kullanılarak tablo oluşturulduktan sonra bu özelliği belirtebilirsiniz.
Aşağıdaki kod örneği, create deyiminde kanalın önizleme olarak nasıl ayarlandığını gösterir:
CREATE OR REPLACE MATERIALIZED VIEW foo.default.bar
TBLPROPERTIES ('pipelines.channel' = 'preview') as
SELECT
*
FROM
range(5)
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.
Bir akış tablosunu CREATE
veya REFRESH
ile güncellediğinizde, bu güncelleme işlemleri sunucusuz bir DLT işlem hattı kullanılarak gerçekleştirilir. Tanımladığınız her akış tablosunun ilişkili bir DLT işlem hattı vardır.
REFRESH
komutunu çalıştırdıktan 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. zaman yolculuğu sorgularını kullanmadan önce akış tablonuzu yenilemeniz gerekebilir.
Bkz. DLT nedir?.
Yalnızca yeni verileri alma
varsayılan olarak, read_files
işlevi tablo oluşturma sırasında kaynak dizindeki tüm mevcut verileri okur ve her yenilemeyle yeni gelen kayıtları işler.
Tablo oluşturma sırasında kaynak dizinde zaten var olan verilerin alımını önlemek için includeExistingFiles
seçeneğini false
olarak ayarlayın. 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
Akış tablosunu otomatik yenileme için zamanla
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 zamanlama sorgularını yenilemek için bkz. ALTER STREAMING TABLE.
Yenilemenin durumunu izleme
Akış tablosu yenilemesinin durumunu, DLT kullanıcı arabiriminde akış tablosunu yöneten işlem hattını görüntüleyerek veya akış tablosu için DESCRIBE EXTENDED
komutu tarafından döndürülen Yenileme Bilgileri görüntüleyerek görüntüleyebilirsiniz.
DESCRIBE EXTENDED <table-name>
Kafka'dan akış verisi alımı
Kafka'dan akış alımı örneği için read_kafka'ya bakın
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.
Akış tablosundaki kayıtları kalıcı olarak silme
Önemli
Akış tabloları içeren REORG
deyimi desteği Genel Önizleme'ndedir.
Not
- Akış tablosuyla
REORG
deyimi kullanabilmek için Databricks Runtime'ın en az 15.4 sürümüne veya daha yenisine sahip olmanız gerekir. -
REORG
deyimini herhangi bir akış tablosuyla kullanabilirsiniz ancak yalnızca silme vektörleri etkin olan bir akış tablosundan kayıtları silerken gereklidir. Silme vektörleri etkinleştirilmeden bir akış tablosuyla kullanıldığında komutun hiçbir etkisi yoktur.
GDPR uyumluluğu gibi silme vektörleri etkinleştirilmiş bir akış tablosunun temel depolama alanından kayıtları fiziksel olarak silmek için, akış tablosunun verilerinde bir VACUUM işleminin çalıştığından emin olmak için ek adımlar atılmalıdır.
Aşağıda bu adımlar daha ayrıntılı olarak açıklanmaktadır:
- Kayıtları güncelleştirin veya akış tablosundan kayıtları silin.
-
APPLY (PURGE)
parametresini belirterek akış tablosunda birREORG
deyimi çalıştırın. ÖrneğinREORG TABLE <streaming-table-name> APPLY (PURGE);
. - Akış tablosunun veri saklama süresinin geçmesini bekleyin. Varsayılan veri saklama süresi yedi gündür, ancak
delta.deletedFileRetentionDuration
tablo özelliğiyle yapılandırılabilir. Bkz Zaman yolculuğu sorguları için veri saklamayı yapılandırma. -
REFRESH
akış tablosu. Bkz. DLT işlem hattı kullanarak akış tablosunu yenileme.REFRESH
işlemini izleyen 24 saat içinde, kayıtların kalıcı olarak silinmesini sağlamak için gerekenVACUUM
işlemi de dahil olmak üzere DLT bakım görevleri otomatik olarak çalıştırılır. Bkz. DLT tarafından gerçekleştirilenBakım görevleri.
Sorgu geçmişini kullanarak çalıştırmaları izleme
Akış tablosu güncelleştirmelerinizi çalıştırmak için kullanılan DLT işlem hattında kötü performans gösteren sorguları ve performans sorunlarını belirlemenize yardımcı olabilecek sorgu ayrıntılarına ve sorgu profillerine erişmek için sorgu geçmişi sayfasını kullanabilirsiniz. Sorgu geçmişlerinde ve sorgu profillerinde kullanılabilen bilgilerin türüne genel bakış için bkz . Sorgu geçmişi ve Sorgu profili.
Önemli
Bu özellik Genel Önizlemededir. Çalışma alanı yöneticileri Bu özelliği Önizlemeler sayfasından etkinleştirebilir. Bkz. Azure Databricks Önizlemelerini Yönetme.
Akış tablolarıyla ilgili tüm deyimler sorgu geçmişinde görünür. Herhangi bir komutu seçmek ve ilgili sorguları incelemek için Deyim açılır filtresini kullanabilirsiniz. Tüm CREATE
deyimleri, DLT işlem hattında zaman uyumsuz olarak yürütülen bir REFRESH
deyimi tarafından takip edilir.
REFRESH
İfadeler genellikle performans optimizasyonu için içgörüler sağlayan ayrıntılı sorgu planlarını içerir.
REFRESH
sorgu geçmişi kullanıcı arabirimindeki ifadelere ulaşmak için aşağıdaki adımları kullanın:
- Sol kenar çubuğundaki
'ne tıklayarak Sorgu Geçmişi kullanıcı arabirimini açın.
- Statement açılır filtresinden REFRESH onay kutusunu seçin.
- Sorgunun süresi ve toplanan ölçümler gibi özet ayrıntılarını görüntülemek için sorgu deyiminin adına tıklayın.
- Sorgu profilini açmak için Sorgu profilini göster'e tıklayın. Sorgu profili gezinme hakkında ayrıntılı bilgi için bkz.
- İsteğe bağlı olarak, ilgili sorguyu veya işlem hattını açmak için Sorgu Kaynağı bölümündeki bağlantıları kullanabilirsiniz.
Sorgu ayrıntılarına SQL düzenleyicisindeki bağlantıları kullanarak veya SQL ambarı ekli bir not defterinden de erişebilirsiniz.