Memuat data menggunakan tabel streaming di Databricks SQL
Databricks merekomendasikan penggunaan tabel streaming untuk menyerap data menggunakan Databricks SQL. Sebuah tabel streaming adalah tabel yang terdaftar di Unity Catalog dengan dukungan tambahan untuk pemrosesan data secara streaming atau inkremental. Alur DLT 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 cara menggunakan tabel streaming untuk memuat data dari penyimpanan objek cloud yang dikonfigurasi sebagai volume Unity Catalog (disarankan) atau lokasi eksternal.
Catatan
Untuk mempelajari cara menggunakan tabel Delta Lake sebagai sumber dan tujuan streaming, lihat Pembacaan dan penulisan streaming tabel Delta.
Penting
Tabel streaming yang dibuat di Databricks SQL didukung oleh alur DLT tanpa server. Ruang kerja Anda harus mendukung alur tanpa server untuk menggunakan fungsionalitas ini.
Sebelum Anda memulai
Sebelum memulai, Anda harus memenuhi persyaratan berikut.
Persyaratan ruang kerja:
- Akun Azure Databricks dengan diaktifkan tanpa server. Untuk informasi selengkapnya, lihat Mengaktifkan gudang SQL tanpa server.
- Ruang kerja dengan Katalog Unity yang sudah diaktifkan. Untuk informasi selengkapnya, lihat Menyiapkan dan mengelola Unity Catalog.
Persyaratan komputasi:
Anda harus menggunakan salah satu hal berikut:
- Gudang SQL yang menggunakan saluran
Current
. - Komputasi dengan mode akses standar (sebelumnya mode akses bersama) pada Databricks Runtime 13.3 LTS atau lebih tinggi.
Komputasi dengan mode akses khusus (sebelumnya mode akses pengguna tunggal) pada Databricks Runtime 15.4 LTS atau lebih tinggi.
Pada Databricks Runtime 15.3 ke bawah, Anda tidak dapat menggunakan komputasi khusus untuk mengkueri tabel streaming yang dimiliki oleh pengguna lain. Anda dapat menggunakan komputasi khusus pada Databricks Runtime 15.3 ke bawah hanya jika Anda memiliki tabel streaming. Pembuat tabel adalah pemiliknya.
Databricks Runtime 15.4 LTS ke atas mendukung kueri pada tabel yang dihasilkan DLT pada komputasi khusus, terlepas dari kepemilikan tabel. Untuk memanfaatkan pemfilteran data yang disediakan dalam Databricks Runtime 15.4 LTS ke atas, Anda harus mengonfirmasi bahwa ruang kerja Anda diaktifkan untuk komputasi tanpa server karena fungsionalitas pemfilteran data yang mendukung tabel yang dihasilkan DLT berjalan pada komputasi tanpa server. Anda dapat dikenakan biaya untuk sumber daya komputasi tanpa server saat menggunakan komputasi khusus untuk menjalankan operasi pemfilteran data. Lihat kontrol akses yang terperinci pada komputasi khusus (sebelumnya komputasi pengguna tunggal).
Persyaratan izin:
- Hak akses
READ FILES
pada lokasi eksternal Katalog Unity. Untuk informasi, lihat Membuat lokasi eksternal untuk menyambungkan penyimpanan cloud ke Azure Databricks. - Hak
USE CATALOG
istimewa di dalam katalog tempat Anda membuat tabel streaming tersebut. - Hak istimewa
USE SCHEMA
dalam skema tempat Anda membuat tabel streaming. - Hak istimewa
CREATE TABLE
pada skema tempat Anda membuat tabel streaming.
Persyaratan lain:
Lokasi 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
Di bilah samping ruang kerja Anda, klik Kueri, lalu klik Buat kueri.
Di editor kueri, pilih gudang SQL yang menggunakan saluran
Current
dari menu drop-down.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 nilai default fungsi tidak dapat mengurai data Anda. Misalnya, Anda mungkin perlu mengonfigurasi mode multibaris untuk file CSV atau JSON multibaris. Untuk daftar opsi pengurai, silakan lihat fungsi bernilai tabelread_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
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>')
Mengatur saluran runtime
Tabel streaming yang dibuat menggunakan gudang SQL secara otomatis di-refresh menggunakan alur DLT. Alur DLT menggunakan runtime di saluran current
secara default. Lihat catatan rilis DLT dan proses peningkatan rilis untuk mempelajari proses rilis.
Databricks merekomendasikan penggunaan current
saluran untuk beban kerja produksi. Fitur baru pertama kali dirilis ke saluran preview
. Anda dapat mengatur alur ke saluran DLT pratinjau untuk menguji fitur baru dengan menentukan preview
sebagai properti tabel. Anda dapat menentukan properti ini saat membuat tabel atau setelah tabel dibuat menggunakan pernyataan ALTER.
Contoh kode berikut menunjukkan cara mengatur saluran untuk dipratinjau dalam pernyataan CREATE:
CREATE OR REPLACE MATERIALIZED VIEW foo.default.bar
TBLPROPERTIES ('pipelines.channel' = 'preview') as
SELECT
*
FROM
range(5)
Segarkan 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.
Saat Anda CREATE
atau REFRESH
tabel streaming, proses pembaruan diproses menggunakan alur DLT tanpa server. Setiap tabel streaming yang Anda tentukan memiliki alur DLT terkait.
Setelah Anda menjalankan perintah REFRESH
, tautan alur DLT dikembalikan. Anda dapat menggunakan tautan alur DLT untuk memeriksa status refresh.
Catatan
Hanya pemilik tabel yang dapat memperbarui tabel streaming untuk mendapatkan data terbaru. Pengguna yang membuat tabel adalah pemilik, dan pemilik tidak dapat diubah. Anda mungkin perlu me-refresh tabel streaming sebelum menggunakan kueri perjalanan waktu .
Lihat Apa itu DLT?.
Menyerap data baru saja
Secara default, fungsi read_files
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 opsi includeExistingFiles
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)
Memperbarui sepenuhnya tabel streaming
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>' ]];
Untuk melihat contoh kueri jadwal refresh, lihat ALTER STREAMING TABLE.
Pantau status pembaruan
Anda dapat melihat status refresh tabel streaming dengan melihat alur yang mengelola tabel streaming di antarmuka pengguna DLT atau dengan melihat Refresh Informasi yang dikembalikan oleh perintah DESCRIBE EXTENDED
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.
Menghapus rekaman secara permanen dari tabel streaming
Catatan
- Menggunakan pernyataan
REORG
dengan tabel streaming memerlukan Databricks Runtime 15.4 ke atas. - Meskipun Anda dapat menggunakan pernyataan
REORG
dengan tabel streaming apa pun, itu hanya diperlukan saat menghapus rekaman dari tabel streaming dengan vektor penghapusan diaktifkan. Perintah tidak berpengaruh saat digunakan dengan tabel streaming tanpa vektor penghapusan diaktifkan.
Untuk menghapus data secara permanen dari penyimpanan dasar untuk tabel streaming dengan vektor penghapusan diaktifkan, misalnya, untuk mematuhi GDPR, langkah tambahan perlu diambil untuk memastikan bahwa operasi VACUUM berjalan pada data tabel streaming.
Berikut ini menjelaskan langkah-langkah ini secara lebih rinci:
- Memperbarui rekaman atau menghapus rekaman dari tabel streaming.
- Jalankan pernyataan
REORG
terhadap tabel streaming, menentukan parameterAPPLY (PURGE)
. Contoh:REORG TABLE <streaming-table-name> APPLY (PURGE);
. - Tunggu hingga periode retensi data tabel streaming berlalu. Periode retensi data default adalah tujuh hari, tetapi dapat dikonfigurasi dengan properti tabel
delta.deletedFileRetentionDuration
. Lihat Mengonfigurasi retensi data untuk kueri perjalanan waktu. -
REFRESH
tabel streaming. Lihat Segarkan tabel streaming menggunakan alur DLT. Dalam waktu 24 jam setelah operasiREFRESH
, tugas pemeliharaan DLT, termasuk operasiVACUUM
yang diperlukan untuk memastikan rekaman dihapus secara permanen, dijalankan secara otomatis. Lihat tugas pemeliharaan yang dilakukan oleh DLT.
Memantau eksekusi menggunakan riwayat kueri
Anda bisa menggunakan halaman riwayat kueri untuk mengakses detail kueri dan profil kueri yang dapat membantu Anda mengidentifikasi kueri dan hambatan yang berkinerja buruk di alur DLT yang digunakan untuk menjalankan pembaruan tabel streaming Anda. Untuk gambaran umum jenis informasi yang tersedia dalam riwayat kueri dan profil kueri, lihat Riwayat kueri dan Profil kueri.
Penting
Fitur ini ada di Pratinjau Publik. Admin ruang kerja dapat mengaktifkan fitur ini dari halaman Pratinjau . Lihat Mengelola Pratinjau Azure Databricks.
Semua pernyataan yang terkait dengan tabel streaming muncul dalam riwayat kueri. Anda dapat menggunakan filter drop-down Pernyataan untuk memilih perintah apa pun dan memeriksa kueri terkait. Semua pernyataan CREATE
diikuti oleh pernyataan REFRESH
yang dijalankan secara asinkron pada alur DLT. Pernyataan REFRESH
biasanya mencakup rencana kueri terperinci yang memberikan wawasan tentang mengoptimalkan performa.
Untuk mengakses REFRESH
pernyataan di antarmuka pengguna riwayat kueri, gunakan langkah-langkah berikut:
- Klik
di bilah sisi kiri untuk membuka UI Kueri Riwayat.
- Pilih kotak centang REFRESH dari filter dropdown Pernyataan.
- Klik nama pernyataan kueri untuk menampilkan detail ringkasan seperti durasi kueri dan metrik agregat.
- Klik Lihat profil kueri untuk membuka profil kueri. Lihat Profil kueri untuk detail tentang menavigasi profil kueri.
- Secara opsional, Anda bisa menggunakan tautan di bagian Sumber Kueri untuk membuka kueri atau alur terkait.
Anda juga dapat mengakses detail kueri menggunakan tautan di editor SQL atau dari buku catatan yang dilampirkan ke gudang SQL.