Gunakan Unity Catalog dengan alur DLT Anda
Penting
Dukungan DLT untuk Katalog Unity berada di Pratinjau Umum.
Databricks merekomendasikan untuk mengonfigurasi alur DLT dengan Unity Catalog.
Alur yang dikonfigurasi dengan Katalog Unity menerbitkan semua tampilan termaterialisasi dan tabel streaming ke katalog dan skema yang ditentukan. Alur 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 fungsi untuk mode penerbitan default saat ini untuk pipeline. Pipeline yang dibuat sebelum 5 Februari 2025 mungkin menggunakan mode penerbitan lama dan skema virtual LIVE
. Lihat skema LANGSUNG (warisan) .
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 CATALOG
hak akses istimewa pada katalog target. - hak istimewa
CREATE MATERIALIZED VIEW
danUSE SCHEMA
pada skema target jika alur Anda membuat tampilan materialisasi . - hak istimewa
CREATE TABLE
danUSE SCHEMA
pada skema target jika alur Anda membuat tabel streaming .
Jika alur Anda membuat skema baru, Anda harus memiliki izin USE CATALOG
dan CREATE SCHEMA
pada katalog target.
Komputasi yang diperlukan untuk menjalankan alur kerja yang diaktifkan oleh Katalog Unity:
- Mode akses standar (sebelumnya mode akses bersama). Alur yang didukung Katalog Unity tidak dapat berjalan pada komputasi khusus (sebelumnya komputasi pengguna tunggal). Lihat Batasan mode akses Standar pada Unity Catalog.
Komputasi yang diperlukan untuk mengkueri tabel yang dibuat oleh alur DLT menggunakan Unity Catalog (termasuk tabel streaming dan tampilan materialisasi) mencakup salah satu hal berikut ini:
- Gudang SQL
- Komputasi mode akses standar pada Databricks Runtime 13.3 LTS atau lebih tinggi.
- 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 halus pada komputasi khusus (sebelumnya komputasi pengguna tunggal).
- 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 DLT:
- 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 driver, lihat Mengizinkan pengguna non-admin untuk melihat log driver dari alur yang mendukung Katalog Unity.
- Pipa yang ada yang menggunakan metastore Apache Hive tidak dapat dimutakhirkan untuk menggunakan Unity Catalog. 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 menyalin 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 Mengelola dependensi Python untuk alur DLT.
- Kueri bahasa manipulasi data (DML) yang mengubah skema tabel streaming tidak didukung.
- Tampilan termaterialisasi yang dibuat dalam alur DLT tidak dapat digunakan sebagai sumber streaming di luar alur tersebut, misalnya, dalam alur lain atau notebook yang berada di hilir.
- 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
LOCATION
tidak didukung saat menentukan tabel. - Pipeline yang diaktifkan oleh Unity Catalog tidak dapat diterbitkan ke metastore Hive.
- Dukungan UDF Python berada di Pratinjau Publik.
- Anda tidak dapat menggunakan Berbagi Delta dengan tampilan terwujud DLT atau tabel streaming yang diterbitkan di Katalog Unity.
Nota
Berkas yang mendasari yang mendukung pandangan materialisasi mungkin menyertakan data dari tabel upstream (termasuk kemungkinan informasi pribadi yang dapat diidentifikasi) yang tidak muncul dalam definisi pandangan materialisasi. Data ini secara otomatis ditambahkan ke penyimpanan yang mendasar untuk mendukung penyegaran tampilan materialisasi secara inkremental.
Karena file dasar dari tampilan materialisasi mungkin berisiko mengekspos data dari tabel sumber yang bukan bagian dari skema tampilan materialisasi, Databricks merekomendasikan untuk tidak berbagi penyimpanan dasar dengan konsumen hilir yang tidak dipercayai.
Misalnya, definisi tampilan materialisasi menyertakan klausa COUNT(DISTINCT field_a)
. Meskipun definisi tampilan materialisasi hanya menyertakan klausa COUNT DISTINCT
agregat, file dasar akan berisi daftar nilai aktual field_a
.
Bisakah saya menggunakan metastore Apache Hive dan alur Katalog Unity bersama?
Ruang kerja Anda dapat berisi pipeline yang menggunakan Unity Catalog dan metastore Hive versi lama. Namun, satu alur kerja tidak dapat menulis ke metastore Apache 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 Membuat 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 DLT yang ada didukung dengan alur yang menggunakan Katalog Unity. Antarmuka Python dan SQL didukung dengan alur yang menggunakan Unity Catalog.
Perubahan pada fungsionalitas yang ada
Saat DLT dikonfigurasi untuk menyimpan data ke Unity Catalog, alur DLT mengelola siklus hidup dan izin tabel. Akibatnya:
- Saat sebuah tabel dihapus dari definisi alur, pembaruan alur berikutnya akan menandai tampilan materialisasi atau entri tabel streaming yang sesuai menjadi tidak aktif. Tabel tidak aktif masih dapat dikueri tetapi tidak akan diperbarui. Untuk membersihkan tampilan materialisasi atau tabel streaming, Anda dapat secara eksplisit melakukan operasi
DROP
pada tabel.- Anda dapat memulihkan tabel yang dihilangkan dalam waktu 7 hari dengan menggunakan perintah
UNDROP
. - Untuk mempertahankan perilaku warisan di mana tampilan materialisasi atau entri tabel streaming dihapus dari Katalog Unity pada pembaruan alur berikutnya, atur konfigurasi alur
"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.
- Anda dapat memulihkan tabel yang dihilangkan dalam waktu 7 hari dengan menggunakan perintah
- Menghapus alur DLT menghasilkan penghapusan semua tabel yang ditentukan dalam alur tersebut. Karena perubahan ini, UI DLT diperbarui untuk meminta Anda mengonfirmasi penghapusan alur.
- Tabel pendukung internal, termasuk yang digunakan untuk mendukung
APPLY CHANGES INTO
, tidak dapat diakses langsung oleh pengguna.
Menulis tabel ke Unity Catalog dari alur DLT
Untuk menulis tabel Anda ke Unity Catalog, Anda harus mengonfigurasi pipeline Anda untuk bekerja dengannya melalui ruang kerja Anda. Saat Anda membuat pipeline, pilih Unity Catalog di bawah opsi Penyimpanan , pilih katalog di menu drop-down Katalog, dan pilih skema yang ada atau masukkan nama untuk skema baru di menu drop-down Target schema. Untuk mempelajari tentang katalog Unity Catalog, lihat Apa itu katalog di Azure Databricks?. Untuk mempelajari tentang skema di Unity Catalog,lihat Apa itu skema di Azure Databricks?.
Menyerap 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 oleh Katalog Unity.
- 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 metastore Unity Catalog dan Apache Hive.
Pemrosesan batch dari tabel Unity Catalog
SQL
CREATE OR REFRESH MATERIALIZED VIEW
table_name
AS SELECT
*
FROM
my_catalog.my_schema.table1;
Python
@dlt.table
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
@dlt.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
@dlt.table
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
@dlt.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 Unity Catalog, lihat Mengelola hak istimewa di Unity Catalog.
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`
Mengizinkan hak istimewa membuat tabel atau tampilan terwujud
GRANT CREATE { MATERIALIZED VIEW | TABLE } ON SCHEMA
my_catalog.my_schema
TO
{ principal | user }
Menampilkan silsilah untuk alur
Silsilah data untuk tabel dalam alur DLT terlihat di Catalog Explorer. UI silsilah Katalog Explorer memperlihatkan tabel hulu dan hilir untuk tampilan materialisasi atau tabel streaming dalam alur yang mendukung Katalog Unity. Untuk mempelajari selengkapnya tentang silsilah Katalog Unity, lihat Mengambil dan melihat silsilah data menggunakan Katalog Unity.
Untuk tampilan materialisasi atau tabel streaming dalam alur DLT 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
skipChangeCommits
diatur, transaksi yang menghapus atau mengubah rekaman pada tabel sumber diabaikan. Jika pemrosesan Anda tidak memerlukan tabel streaming, Anda dapat menggunakan tampilan materialisasi (yang tidak memiliki batasan khusus tambahan) 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
Penting
Fitur ini ada di Pratinjau Umum.
Filter baris memungkinkan Anda menentukan fungsi sebagai penyaring setiap kali pemindaian tabel mengambil data dari baris. Filter ini memastikan bahwa kueri berikutnya hanya mengembalikan baris yang predikat filternya dipastikan bernilai 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 Memfilter data tabel sensitif menggunakan 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 DLT SQL dan referensi bahasa DLT Python.
Perilaku
Berikut ini adalah detail penting saat menggunakan filter baris atau masker kolom di alur DLT:
-
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_USER
danIS_MEMBER
) dievaluasi menggunakan konteks pengguna pemilik alur. -
Query: Saat mengkueri tampilan materialisasi atau tabel streaming, fungsi yang memeriksa konteks pengguna (seperti
CURRENT_USER
danIS_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 tanggal yang paling up-to.
Keterpantauan
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.