Aracılığıyla paylaş


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

  1. Çalışma alanınızın kenar çubuğunda Sorgular’a, ardından Yeni sorgu oluştur'a tıklayın.

  2. Sorgu düzenleyicisinde, açılan listeden Current kanalı kullanan bir SQL ambarı seçin.

  3. 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 falseolarak 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:

  1. Kayıtları güncelleştirin veya akış tablosundan kayıtları silin.
  2. APPLY (PURGE) parametresini belirterek akış tablosunda bir REORG deyimi çalıştırın. Örneğin REORG TABLE <streaming-table-name> APPLY (PURGE);.
  3. 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.
  4. 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 gereken VACUUM 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:

  1. Sol kenar çubuğundaki Geçmiş Simgesi'ne tıklayarak Sorgu Geçmişi kullanıcı arabirimini açın.
  2. Statement açılır filtresinden REFRESH onay kutusunu seçin.
  3. 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.
  4. 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.
  5. İ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.

Ek kaynaklar