Bagikan melalui


Memuat data menggunakan tabel streaming di Databricks SQL

Penting

Fitur ini ada di Pratinjau Publik.

Databricks merekomendasikan penggunaan tabel streaming untuk menyerap data menggunakan Databricks SQL. Tabel streaming adalah tabel terkelola Katalog Unity dengan dukungan tambahan untuk streaming atau pemrosesan data bertahas. Alur Delta Live Tables secara otomatis dibuat untuk setiap tabel streaming. Anda dapat menggunakan tabel streaming untuk pemuatan data bertahap dari Kafka dan penyimpanan objek cloud.

Artikel ini menunjukkan penggunaan tabel streaming untuk memuat data dari penyimpanan objek cloud yang dikonfigurasi sebagai volume Katalog Unity (disarankan) atau lokasi eksternal.

Catatan

Untuk mempelajari cara menggunakan tabel Delta Lake sebagai sumber streaming dan sink, lihat Baca dan tulis streaming tabel Delta.

Sebelum Anda memulai

Sebelum memulai, pastikan Anda memiliki hal berikut:

  • Akun Azure Databricks dengan diaktifkan tanpa server. Untuk informasi selengkapnya, lihat Mengaktifkan gudang SQL tanpa server.

  • Ruang kerja dengan Katalog Unity diaktifkan. Untuk informasi selengkapnya, lihat Menyiapkan dan mengelola Katalog Unity.

  • Gudang SQL yang menggunakan Current saluran.

  • Untuk mengkueri tabel streaming yang dibuat oleh alur Tabel Langsung Delta, Anda harus menggunakan komputasi bersama menggunakan Databricks Runtime 13.3 LTS ke atas atau gudang SQL. Tabel streaming yang dibuat dalam alur yang diaktifkan Katalog Unity tidak dapat dikueri dari kluster yang ditetapkan atau tidak ada isolasi.

  • Hak READ FILES istimewa pada lokasi eksternal Katalog Unity. Untuk informasi, lihat Membuat lokasi eksternal untuk menyambungkan penyimpanan cloud ke Azure Databricks.

  • Hak USE CATALOG istimewa pada katalog tempat Anda membuat tabel streaming.

  • Hak USE SCHEMA istimewa pada skema tempat Anda membuat tabel streaming.

  • Hak CREATE TABLE istimewa pada skema tempat Anda membuat tabel streaming.

  • Jalur ke data sumber Anda.

    Contoh jalur volume: /Volumes/<catalog>/<schema>/<volume>/<path>/<file-name>

    Contoh jalur lokasi eksternal: abfss://myContainer@myStorageAccount.dfs.core.windows.net/analysis

    Catatan

    Artikel ini mengasumsikan data yang ingin Anda muat berada di lokasi penyimpanan cloud yang sesuai dengan volume Katalog Unity atau lokasi eksternal yang dapat Anda akses.

Menemukan dan mempratinjau data sumber

  1. Di bilah samping ruang kerja Anda, klik Kueri, lalu klik Buat kueri.

  2. Di editor kueri, pilih gudang SQL yang menggunakan Current saluran dari daftar drop-down.

  3. Tempelkan yang berikut ini ke editor, ganti nilai dalam tanda kurung sudut (<>) untuk informasi yang mengidentifikasi data sumber Anda, lalu klik Jalankan.

    Catatan

    Anda mungkin mengalami kesalahan inferensi skema saat menjalankan read_files fungsi bernilai tabel jika default untuk fungsi tidak dapat mengurai data Anda. Misalnya, Anda mungkin perlu mengonfigurasi mode multibaris untuk file CSV atau JSON multibaris. Untuk daftar opsi pengurai, lihat read_files fungsi bernilai tabel.

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

Memuat data ke dalam tabel streaming

Untuk membuat tabel streaming dari data di penyimpanan objek cloud, tempelkan yang berikut ini ke editor kueri, lalu klik Jalankan:

/* 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>')

Merefresh tabel streaming menggunakan alur DLT

Bagian ini menjelaskan pola untuk me-refresh tabel streaming dengan data terbaru yang tersedia dari sumber yang ditentukan dalam kueri.

CREATE operasi untuk tabel streaming menggunakan gudang Databricks SQL untuk pembuatan dan pemuatan data awal ke dalam tabel streaming. REFRESH operasi untuk tabel streaming menggunakan Delta Live Tables (DLT). Alur DLT secara otomatis dibuat untuk setiap tabel streaming. Saat tabel streaming di-refresh, pembaruan ke alur DLT dimulai untuk memproses refresh.

Setelah Anda menjalankan REFRESH perintah, tautan alur DLT dikembalikan. Anda dapat menggunakan tautan alur DLT untuk memeriksa status refresh.

Catatan

Hanya pemilik tabel yang dapat menyegarkan tabel streaming untuk mendapatkan data terbaru. Pengguna yang membuat tabel adalah pemilik, dan pemilik tidak dapat diubah.

Lihat Apa itu Tabel Langsung Delta?.

Menyerap data baru saja

Secara default, read_files fungsi membaca semua data yang ada di direktori sumber selama pembuatan tabel, lalu memproses rekaman yang baru tiba dengan setiap refresh.

Untuk menghindari penyerapan data yang sudah ada di direktori sumber pada saat pembuatan tabel, atur includeExistingFiles opsi ke false. Ini berarti bahwa hanya data yang tiba di direktori setelah pembuatan tabel diproses. Contohnya:

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)

Merefresh tabel streaming sepenuhnya

Refresh penuh memproses ulang semua data yang tersedia di sumber dengan definisi terbaru. Tidak disarankan untuk memanggil refresh penuh pada sumber yang tidak menyimpan seluruh riwayat data atau memiliki periode retensi singkat, seperti Kafka, karena refresh penuh memotong data yang ada. Anda mungkin tidak dapat memulihkan data lama jika data tidak lagi tersedia di sumbernya.

Contohnya:

REFRESH STREAMING TABLE my_bronze_table FULL

Menjadwalkan tabel streaming untuk refresh otomatis

Untuk mengonfigurasi tabel streaming agar di-refresh secara otomatis berdasarkan jadwal yang ditentukan, tempelkan yang berikut ini ke editor kueri, lalu klik Jalankan:

ALTER STREAMING TABLE
[[<catalog>.]<database>.]<name>
ADD [SCHEDULE [REFRESH]
        CRON '<cron-string>'
                [ AT TIME ZONE '<timezone-id>' ]];

Misalnya kueri jadwal refresh, lihat MENGUBAH TABEL STREAMING.

Melacak status refresh

Anda dapat melihat status refresh tabel streaming dengan melihat alur yang mengelola tabel streaming di UI Tabel Langsung Delta atau dengan melihat Informasi Refresh yang dikembalikan oleh DESCRIBE EXTENDED perintah untuk tabel streaming.

DESCRIBE EXTENDED <table-name>

Penyerapan streaming dari Kafka

Untuk contoh penyerapan streaming dari Kafka, lihat read_kafka.

Memberi pengguna akses ke tabel streaming

Untuk memberi pengguna SELECT hak istimewa pada tabel streaming sehingga mereka bisa mengkuerinya, tempelkan yang berikut ini ke editor kueri, lalu klik Jalankan:

GRANT SELECT ON TABLE <catalog>.<schema>.<table> TO <user-or-group>

Untuk informasi selengkapnya tentang memberikan hak istimewa pada objek yang dapat diamankan Katalog Unity, lihat Hak istimewa Katalog Unity dan objek yang dapat diamankan.

Batasan

  • Tabel streaming Databricks SQL tidak didukung di wilayah US Tengah Selatan dan US Barat 2.

Sumber Daya Tambahan: