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 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

  1. Çalışma alanınızın kenar çubuğunda Sorgular'a ve ardından 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 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 falseayarlayı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.

Ek kaynaklar