Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Databricks merekomendasikan untuk mengonfigurasi Alur Deklaratif Lakeflow Spark dengan Unity Catalog. Menggunakan Unity Catalog adalah default untuk alur yang baru dibuat.
Alur yang dikonfigurasi dengan Katalog Unity menerbitkan semua tampilan termaterialisasi dan tabel streaming ke katalog dan skema yang ditentukan. Alur kerja Katalog Unity dapat membaca dari tabel dan volume Katalog Unity lainnya.
Untuk mengelola izin pada tabel yang dibuat oleh alur Katalog Unity, gunakan GRANT dan REVOKE.
Nota
Artikel ini membahas fungsionalitas untuk mode penerbitan default yang saat ini berlaku untuk pipeline. Pipeline yang dibuat sebelum 5 Februari 2025 mungkin menggunakan mode penerbitan lama dan skema virtual LIVE. Lihat skema LIVE (versi lama).
Persyaratan
Untuk membuat tabel streaming dan tampilan materialisasi dalam skema target di Katalog Unity, Anda harus memiliki izin berikut pada skema dan katalog induk:
-
USE CATALOGhak akses istimewa pada katalog target. - hak akses
CREATE MATERIALIZED VIEWdanUSE SCHEMAterhadap skema target jika pipeline Anda membuat tampilan materialisasi . -
CREATE TABLEdanUSE SCHEMAhak akses pada skema target jika pipeline Anda membuat tabel streaming. - Jika alur Anda membuat skema baru, Anda harus memiliki izin
USE CATALOGdanCREATE SCHEMApada katalog target.
Persyaratan komputasi untuk menjalankan alur yang mendukung Katalog Unity:
- Sumber daya komputasi Anda harus dikonfigurasi dengan mode akses standar. Komputasi khusus tidak didukung. Lihat Mode akses.
Komputasi yang diperlukan untuk mengkueri tabel yang dibuat oleh alur menggunakan Katalog Unity (termasuk tabel streaming dan tampilan materialisasi) mencakup salah satu hal berikut ini:
- Gudang SQL
- Mode akses standar dihitung pada Databricks Runtime 13.3 LTS atau yang lebih baru.
- Mode akses khusus untuk komputasi, jika kontrol akses yang lebih rinci diaktifkan pada komputasi khusus (yaitu, berjalan pada Databricks Runtime 15.4 atau lebih tinggi dan komputasi tanpa server diaktifkan untuk ruang kerja). Untuk informasi selengkapnya, lihat Kontrol akses terperindar pada komputasi khusus.
- Komputasi dalam mode akses khusus pada 13.3 LTS hingga 15.3, hanya jika pemilik tabel menjalankan query tersebut.
Batasan komputasi tambahan berlaku. Lihat bagian berikut ini.
Batasan
Berikut ini adalah batasan saat menggunakan Unity Catalog dengan alur:
- Secara default, hanya pemilik alur dan admin ruang kerja yang dapat melihat log driver dari komputasi yang menjalankan alur yang mendukung Katalog Unity. Untuk mengizinkan pengguna lain mengakses log pengemudi, lihat Izinkan pengguna non-admin melihat log pengemudi dari pipeline yang diaktifkan oleh Unity Catalog.
- Alur yang sudah ada yang menggunakan metastore Hive tidak dapat dimutakhirkan untuk menggunakan Katalog Unity. Untuk memigrasikan alur yang sudah ada yang menulis ke metastore Apache Hive, Anda harus membuat alur baru dan menyerap ulang data dari sumber data. Lihat Buat alur Katalog Unity dengan mengkloning alur metastore Apache Hive.
- Anda tidak dapat membuat pipeline yang diaktifkan oleh Katalog Unity di ruang kerja yang terhubung ke metastore yang dibuat selama Pratinjau Umum Katalog Unity. Lihat Peningkatan ke pewarisan hak istimewa.
- JAR tidak dapat didukung. Hanya pustaka Python pihak ketiga yang didukung. Lihat Kelola dependensi Python untuk alur.
- Kueri bahasa manipulasi data (DML) yang mengubah skema tabel streaming tidak didukung.
- Tampilan materialisasi yang dibuat dalam pipeline tidak dapat digunakan sebagai sumber streaming di luar pipeline tersebut, misalnya, di pipeline lain atau notebook di tahap selanjutnya.
- Data untuk tampilan materialis dan tabel streaming disimpan di lokasi penyimpanan untuk skema yang menampung. Jika lokasi penyimpanan skema tidak ditentukan, tabel disimpan di lokasi penyimpanan katalog. Jika lokasi penyimpanan skema dan katalog tidak ditentukan, tabel disimpan di lokasi penyimpanan akar metastore.
- Tab Riwayat Penjelajah Katalog tidak menampilkan riwayat untuk tampilan materialisasi.
- Properti
LOCATIONtidak didukung saat menentukan tabel. - Alur yang menggunakan Unity Catalog tidak dapat diterbitkan ke metastore Hive.
- Dukungan untuk UDF Python sedang dalam Pratinjau Umum.
Nota
File dasar yang mendukung tampilan materialisasi mungkin menyertakan data dari tabel upstream (termasuk kemungkinan informasi pribadi yang dapat diidentifikasi) yang tidak muncul dalam definisi tampilan materialisasi. Data ini secara otomatis ditambahkan ke penyimpanan dasar untuk mendukung penyegaran tampilan materialisasi secara inkremental.
Karena file dasar dari tampilan materialisasi mungkin berisiko mengekspos data dari tabel hulu yang bukan bagian dari skema tampilan materialisasi, Databricks merekomendasikan untuk tidak berbagi penyimpanan dasar dengan konsumen hilir yang tidak tepercaya.
Misalnya, definisi tampilan materialisasi menyertakan klausa COUNT(DISTINCT field_a). Meskipun definisi tampilan materialisasi hanya menyertakan klausul agregat COUNT DISTINCT, file dasar akan berisi daftar nilai aktual field_a.
Dapatkah saya menggunakan Hive Metastore dan pipeline Katalog Unity bersama-sama?
Ruang kerja Anda dapat berisi pipeline yang menggunakan Unity Catalog dan metastore Hive versi lama. Namun, pipa data tunggal tidak dapat menulis ke metastore Hive dan Katalog Unity. Alur kerja yang ada yang menulis ke metastore Hive tidak dapat dimutakhirkan untuk menggunakan Katalog Unity. Untuk memigrasikan alur yang sudah ada yang menulis ke metastore Apache Hive, Anda harus membuat alur baru dan menyerap ulang data dari sumber data. Lihat Buat alur Katalog Unity dengan mengkloning alur metastore Apache Hive.
Alur yang sudah ada yang tidak menggunakan Katalog Unity tidak akan terpengaruh ketika membuat alur baru yang dikonfigurasi dengan Katalog Unity. Alur ini terus menyimpan data ke metastore Apache Hive menggunakan lokasi penyimpanan yang dikonfigurasi.
Kecuali ditentukan sebaliknya dalam dokumen ini, semua sumber data dan fungsionalitas alur yang ada didukung dengan alur yang menggunakan Katalog Unity. Antarmuka Python dan SQL didukung dengan alur yang menggunakan Katalog Unity.
Tabel tidak aktif
Saat alur dikonfigurasi untuk menyimpan data ke Unity Catalog, alur mengelola siklus hidup dan izin tabel.
Tabel dapat menjadi tidak aktif jika definisinya dihapus dari alur. Pembaruan pipeline berikutnya menandai tampilan materialisasi atau entri tabel streaming yang sesuai sebagai tidak aktif.
Jika Anda mengubah katalog atau skema default alur dan tidak menggunakan nama tabel yang sepenuhnya memenuhi syarat dalam kode sumber alur, eksekusi alur berikutnya membuat tampilan materialisasi atau tabel streaming di katalog atau skema baru, dan tampilan materialisasi atau tabel streaming sebelumnya di lokasi lama ditandai sebagai tidak aktif.
Anda masih bisa mengkueri tabel yang tidak aktif, tetapi alur tidak lagi memperbaruinya. Untuk membersihkan tampilan materialisasi atau tabel streaming, gunakan DROP secara eksplisit untuk tabel. Tabel tidak aktif akan dihapus saat alur dihapus.
- Anda dapat memulihkan tabel yang dihilangkan dalam waktu 7 hari dengan menggunakan
UNDROPperintah . - Untuk mempertahankan perilaku bawaan di mana tampilan terwujud atau entri tabel streaming dihapus dari Katalog Unity pada pembaruan alur kerja berikutnya, atur konfigurasi alur kerja
"pipelines.dropInactiveTables": "true". Data aktual disimpan selama periode tertentu sehingga dapat dipulihkan jika dihapus secara tidak sengaja. Data dapat dipulihkan dalam waktu 7 hari dengan menambahkan tampilan materialisasi atau tabel streaming kembali ke definisi alur.
Menghapus alur sepenuhnya (dibandingkan dengan menghapus definisi tabel dari sumber alur) juga menghapus semua tabel yang ditentukan dalam alur tersebut. UI meminta Anda untuk mengonfirmasi penghapusan alur.
Menghapus alur
Saat Anda menghapus alur Katalog Unity, tampilan materialisasi terkait, tabel streaming, dan tampilan juga dihapus.
Untuk menghapus alur dan mempertahankan tabelnya, gunakan cascade bidang di API. Tabel yang dipertahankan tidak aktif, tetapi dapat dikueri. Anda dapat memindahkan tabel yang tidak aktif ke alur baru, dan jika dilampirkan ke alur, tabel tersebut akan diaktifkan kembali. Lihat Memindahkan tabel antar alur.
DELETE /api/2.0/pipelines/{pipeline_id}?cascade=false
Lihat Menghapus alur dalam dokumentasi Databricks REST API.
Menulis tabel ke Unity Catalog dari alur
Untuk menulis tabel Anda ke Unity Catalog, Anda harus mengonfigurasi pipeline Anda untuk bekerja dengannya melalui ruang kerja Anda. Saat Anda membuat alur, pilih Katalog Unity di bawah Opsi penyimpanan, pilih katalog di menu drop-down Katalog , dan pilih skema yang sudah ada atau masukkan nama untuk skema baru di menu drop-down Skema target . Untuk mempelajari tentang katalog Unity, lihat Apa itu katalog di Azure Databricks?. Untuk mempelajari tentang skema di Katalog Unity, lihat Apa skema dalam Azure Databricks?.
Memasukkan data ke dalam alur Katalog Unity
Alur Anda yang dikonfigurasi untuk menggunakan Unity Catalog dapat membaca data dari:
- Tabel yang dikelola dan eksternal, tampilan, tampilan materialisasi, dan tabel streaming di Unity Catalog.
- Tabel dan tampilan metastore Hive.
- Auto Loader menggunakan fungsi
read_files()untuk membaca dari lokasi eksternal di Unity Catalog. - Apache Kafka dan Amazon Kinesis.
Berikut ini adalah contoh membaca dari tabel Unity Catalog dan metastore Hive.
Pemasukan batch dari tabel Unity Catalog
SQL
CREATE OR REFRESH MATERIALIZED VIEW
table_name
AS SELECT
*
FROM
my_catalog.my_schema.table1;
Python
@dp.materialized_view
def table_name():
return spark.read.table("my_catalog.my_schema.table")
Melakukan streaming perubahan dari tabel Katalog Unity
SQL
CREATE OR REFRESH STREAMING TABLE
table_name
AS SELECT
*
FROM
STREAM(my_catalog.my_schema.table1);
Python
@dp.table
def table_name():
return spark.readStream.table("my_catalog.my_schema.table")
Mengimpor data dari metastore Apache Hive
Alur yang menggunakan Unity Catalog dapat membaca data dari tabel metastore Hive menggunakan katalog hive_metastore:
SQL
CREATE OR REFRESH MATERIALIZED VIEW
table_name
AS SELECT
*
FROM
hive_metastore.some_schema.table;
Python
@dp.materialized_view
def table3():
return spark.read.table("hive_metastore.some_schema.table")
Memuat data dari Auto Loader
SQL
CREATE OR REFRESH STREAMING TABLE table_name
AS SELECT *
FROM STREAM read_files(
"/path/to/uc/external/location",
format => "json"
)
Python
@dp.table(table_properties={"quality": "bronze"})
def table_name():
return (
spark.readStream.format("cloudFiles")
.option("cloudFiles.format", "json")
.load(f"{path_to_uc_external_location}")
)
Bagikan pandangan terwujud
Secara default, hanya pemilik alur yang memiliki izin untuk mengkueri himpunan data yang dibuat oleh alur. Anda bisa memberi pengguna lain kemampuan untuk mengkueri tabel dengan menggunakan pernyataan GRANT dan Anda bisa mencabut akses kueri menggunakan pernyataan REVOKE. Untuk informasi selengkapnya tentang hak istimewa di Katalog Unity, lihat Mengelola hak istimewa di Katalog Unity.
Memberikan izin select pada tabel
GRANT SELECT ON TABLE
my_catalog.my_schema.table_name
TO
`user@databricks.com`
Mencabut hak SELECT pada tabel
REVOKE SELECT ON TABLE
my_catalog.my_schema.table_name
FROM
`user@databricks.com`
Memberikan izin untuk membuat tabel atau tampilan materialisasi
GRANT CREATE { MATERIALIZED VIEW | TABLE } ON SCHEMA
my_catalog.my_schema
TO
{ principal | user }
Menampilkan silsilah untuk rangkaian
Silsilah data untuk tabel yang ditentukan dalam alur terlihat di Catalog Explorer. UI silsilah di Katalog Explorer menampilkan tabel hulu dan hilir untuk tampilan yang dimaterialisasi atau tabel streaming dalam alur yang menggunakan fitur Unity Catalog. Untuk mempelajari selengkapnya tentang silsilah Katalog Unity, lihat Menampilkan silsilah data menggunakan Katalog Unity.
Untuk tampilan materialisasi atau tabel streaming dalam alur yang mendukung Katalog Unity, UI silsilah Katalog Explorer juga akan menautkan ke alur yang menghasilkan tampilan materialisasi atau tabel streaming jika alur dapat diakses dari ruang kerja saat ini.
Menambahkan, mengubah, atau menghapus data dalam tabel streaming
Anda dapat menggunakan pernyataan bahasa manipulasi data (DML), termasuk pernyataan sisipkan, perbarui, hapus, dan gabungkan, untuk memodifikasi tabel streaming yang diterbitkan ke Katalog Unity. Dukungan untuk kueri DML terhadap tabel streaming memungkinkan kasus penggunaan seperti memperbarui tabel untuk kepatuhan dengan Peraturan Perlindungan Data Umum (GDPR).
Nota
- Pernyataan DML yang mengubah skema tabel tabel streaming tidak didukung. Pastikan bahwa pernyataan DML Anda tidak mencoba mengembangkan skema tabel.
- Pernyataan DML yang memperbarui tabel streaming hanya dapat dijalankan di kluster Unity Catalog bersama atau gudang SQL menggunakan Databricks Runtime 13.3 LTS ke atas.
- Karena streaming memerlukan sumber data khusus tambahan, jika pemrosesan Anda memerlukan streaming dari tabel streaming sumber dengan perubahan (misalnya, menurut pernyataan DML), atur bendera skipChangeCommits saat membaca tabel streaming sumber. Saat
skipChangeCommitsdiatur, transaksi yang menghapus atau mengubah rekaman pada tabel sumber diabaikan. Jika pemrosesan Anda tidak memerlukan tabel streaming, Anda dapat menggunakan pandangan materialisasi (yang tidak memiliki batasan hanya-menambahkan) sebagai tabel target.
Berikut ini adalah contoh pernyataan DML untuk mengubah rekaman dalam tabel streaming.
Menghapus rekaman dengan ID tertentu:
DELETE FROM my_streaming_table WHERE id = 123;
Memperbarui rekaman dengan ID tertentu:
UPDATE my_streaming_table SET name = 'Jane Doe' WHERE id = 123;
Terbitkan tabel dengan filter baris dan masker kolom
Filter baris memungkinkan Anda menentukan fungsi yang berlaku sebagai filter setiap kali pemindaian tabel mengambil baris. Filter ini memastikan bahwa kueri berikutnya hanya mengembalikan baris di mana hasil evaluasi predikat filternya adalah benar.
Masker kolom memungkinkan Anda menutupi nilai kolom setiap kali pemindaian tabel mengambil baris. Kueri di masa mendatang untuk kolom tersebut mengembalikan hasil fungsi yang dievaluasi alih-alih nilai asli kolom. Untuk informasi selengkapnya tentang menggunakan filter baris dan masker kolom, lihat Filter baris dan masker kolom.
Mengelola Filter Baris dan Masker Kolom
Filter baris dan masker kolom pada tampilan materialisasi dan tabel streaming harus ditambahkan, diperbarui, atau dihilangkan melalui pernyataan CREATE OR REFRESH.
Untuk sintaks terperinci tentang menentukan tabel dengan filter baris dan masker kolom, lihat referensi bahasa Pipeline SQL dan referensi bahasa Lakeflow Spark Declarative Pipelines Python.
Perilaku
Berikut ini adalah detail penting saat menggunakan filter baris atau masker kolom dalam alur:
-
Refresh sebagai pemilik: Saat pembaruan alur me-refresh tampilan materialisasi atau tabel streaming, filter baris, dan fungsi masker kolom berjalan dengan hak pemilik alur. Ini berarti refresh tabel menggunakan konteks keamanan pengguna yang membuat alur. Fungsi yang memeriksa konteks pengguna (seperti
CURRENT_USERdanIS_MEMBER) dievaluasi menggunakan konteks pengguna pemilik alur. -
Kueri: Saat mengkueri tampilan materialisasi atau tabel streaming, fungsi yang memeriksa konteks pengguna (seperti
CURRENT_USERdanIS_MEMBER) dievaluasi menggunakan konteks pengguna pemanggil. Pendekatan ini memberlakukan keamanan data dan kontrol akses khusus pengguna berdasarkan konteks pengguna saat ini. - Saat membuat tampilan materialisasi atas tabel sumber yang berisi filter baris dan masker kolom, refresh tampilan materialisasi selalu merupakan refresh penuh. Refresh penuh memproses ulang semua data yang tersedia di sumber dengan definisi terbaru. Proses ini memeriksa bahwa kebijakan keamanan pada tabel sumber dievaluasi dan diterapkan dengan data dan definisi yang paling terkini.
Observability
Gunakan DESCRIBE EXTENDED, INFORMATION_SCHEMA, atau Catalog Explorer untuk memeriksa filter baris dan masker kolom yang ada yang berlaku untuk tampilan materialisasi atau tabel streaming tertentu. Fungsionalitas ini memungkinkan pengguna untuk mengaudit dan meninjau langkah-langkah akses dan perlindungan data pada tampilan terwujud dan tabel streaming.