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

  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.

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

Sınırlama

  • Databricks SQL akış tabloları Orta Güney ABD ve Batı ABD 2 bölgelerinde desteklenmez.

Ek kaynaklar