Bagikan melalui


Menggunakan Unity Catalog dengan alur Tabel Delta Live Anda

Penting

Dukungan Tabel Delta Live untuk SCD tipe 2 ada di Pratinjau Umum.

Selain dukungan yang ada untuk mempertahankan tabel ke metastore Apache Hive, Anda dapat menggunakan Katalog Unity dengan alur Tabel Langsung Delta Anda untuk:

  • Tentukan katalog di Unity Catalog tempat alur Anda akan mempertahankan tabel.
  • Membaca data dari tabel Unity Catalog.

Ruang kerja Anda dapat berisi alur yang menggunakan Katalog Unity atau metastore Apache Hive. Namun, satu alur tidak dapat menulis ke metastore Apache Hive dan Katalog Unity dan alur yang ada tidak dapat ditingkatkan untuk menggunakan Katalog Unity. Alur Anda yang sudah ada yang tidak menggunakan Katalog Unity tidak terpengaruh oleh pratinjau ini, dan akan terus menyimpan data ke metastore Apache Hive menggunakan lokasi penyimpanan yang dikonfigurasi.

Kecuali ditentukan sebaliknya dalam dokumen ini, semua sumber data yang ada dan fungsionalitas Tabel Langsung Delta didukung dengan alur yang menggunakan Katalog Unity. Antarmuka Python dan SQL didukung dengan alur yang menggunakan Katalog Unity.

Tabel yang dibuat dalam alur Anda juga dapat dikueri dari kluster Katalog Unity bersama menggunakan Databricks Runtime 13.3 LTS ke atas atau gudang SQL. Tabel tidak dapat dikueri dari kluster yang ditetapkan atau tidak ada isolasi.

Untuk mengelola izin pada tabel yang dibuat oleh alur Katalog Unity, gunakan GRANT dan REVOKE.

Persyaratan

Berikut ini diperlukan untuk membuat tabel di Unity Catalog dari alur Delta Live Tables:

  • Anda harus memiliki USE CATALOG hak istimewa pada katalog target.
  • Anda harus memiliki CREATE MATERIALIZED VIEW hak istimewa dan USE SCHEMA dalam skema target jika alur Anda membuat tampilan materialisasi.
  • Anda harus memiliki CREATE TABLE hak istimewa dan USE SCHEMA dalam skema target jika alur Anda membuat tabel streaming.
  • Jika skema target tidak ditentukan dalam pengaturan alur, Anda harus memiliki CREATE MATERIALIZED VIEW hak istimewa atau CREATE TABLE pada setidaknya satu skema dalam katalog target.

Batasan

Berikut ini adalah batasan saat menggunakan Katalog Unity dengan Tabel Langsung Delta:

  • Secara default, hanya pemilik alur dan admin ruang kerja yang memiliki izin untuk melihat log driver dari kluster yang menjalankan alur yang mendukung Katalog Unity. Untuk mengaktifkan akses bagi pengguna lain untuk melihat log driver, lihat Mengizinkan pengguna non-admin untuk melihat log driver dari alur yang mendukung Katalog Unity.

  • Alur yang ada yang menggunakan metastore Apache 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.

  • Anda tidak dapat membuat alur berkemampuan Katalog Unity di ruang kerja yang dilampirkan ke metastore yang dibuat selama pratinjau publik Katalog Unity. Lihat Meningkatkan ke pewarisan hak istimewa.

  • Pustaka dan JAR pihak ketiga tidak didukung.

  • Kueri bahasa manipulasi data (DML) yang mengubah skema tabel streaming tidak didukung.

  • Tampilan materialisasi yang dibuat dalam alur Tabel Langsung Delta tidak dapat digunakan sebagai sumber streaming di luar alur tersebut, misalnya, di alur lain atau di buku catatan hilir.

  • Penerbitan ke skema yang menentukan lokasi penyimpanan terkelola hanya didukung di saluran pratinjau.

  • Jika alur diterbitkan ke skema dengan lokasi penyimpanan terkelola, skema dapat diubah dalam pembaruan berikutnya, tetapi hanya jika skema yang diperbarui menggunakan lokasi penyimpanan yang sama dengan skema yang ditentukan sebelumnya.

  • Jika skema target menentukan lokasi penyimpanan, semua tabel disimpan di sana. Jika lokasi penyimpanan skema tidak ditentukan, tabel disimpan di lokasi penyimpanan katalog jika katalog target menentukannya. Jika lokasi penyimpanan skema dan katalog tidak ditentukan, tabel disimpan di lokasi penyimpanan akar metastore tempat tabel diterbitkan.

  • Tab Riwayat di Catalog Explorer tidak menampilkan riwayat untuk tabel streaming dan tampilan materialisasi.

  • Properti LOCATION tidak didukung saat menentukan tabel.

  • Alur yang diaktifkan Katalog Unity tidak dapat diterbitkan ke metastore Apache Hive.

  • Dukungan UDF Python ada di Pratinjau Umum. Untuk menggunakan UDF Python, alur Anda harus menggunakan saluran pratinjau.

  • Anda tidak dapat menggunakan Berbagi Delta dengan tampilan materialisasi Tabel Langsung Delta atau tabel streaming yang diterbitkan ke Katalog Unity.

  • Anda tidak dapat menggunakan fungsi bernilai event_logtabel dalam alur atau kueri untuk mengakses log peristiwa dari beberapa alur.

  • Anda tidak dapat berbagi tampilan yang dibuat melalui event_logfungsi bernilai tabel dengan pengguna lain.

  • Kluster simpul tunggal tidak didukung dengan alur yang diaktifkan Katalog Unity. Karena Tabel Langsung Delta mungkin membuat kluster simpul tunggal untuk menjalankan alur yang lebih kecil, alur Anda mungkin gagal dengan pesan kesalahan yang mereferensikan single-node mode. Jika ini terjadi, pastikan Anda menentukan setidaknya satu pekerja saat Mengonfigurasi pengaturan komputasi Anda.

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

  • Tabel Langsung Delta menggunakan kluster mode akses bersama untuk menjalankan alur yang mendukung Katalog Unity. Alur yang diaktifkan Katalog Unity tidak dapat berjalan pada kluster yang ditetapkan. Untuk mempelajari tentang batasan mode akses bersama dengan Unity Catalog, lihat Batasan mode akses bersama pada Katalog Unity.

  • Anda tidak dapat menggunakan filter baris atau masker kolom dengan tampilan materialisasi atau tabel streaming yang diterbitkan ke Katalog Unity.

Catatan

File yang mendasar yang mendukung tampilan materialisasi mungkin menyertakan data dari tabel upstram (termasuk kemungkinan informasi yang dapat diidentifikasi secara pribadi) yang tidak muncul dalam definisi tampilan materialisasi. Data ini secara otomatis ditambahkan ke penyimpanan yang mendasar untuk mendukung penyegaran tampilan materialisasi secara inkremental.

Karena file yang mendasar dari tampilan materialisasi mungkin berisiko mengekspos data dari tabel hulu bukan bagian dari skema tampilan materialisasi, Databricks merekomendasikan untuk tidak berbagi penyimpanan yang mendasar dengan konsumen hilir yang tidak tepercaya.

Misalnya, misalkan definisi tampilan materialisasi menyertakan COUNT(DISTINCT field_a) klausul. Meskipun definisi tampilan materialisasi hanya menyertakan klausul agregatCOUNT DISTINCT, file yang mendasar akan berisi daftar nilai aktual .field_a

Perubahan pada fungsionalitas yang ada

Saat Tabel Langsung Delta dikonfigurasi untuk menyimpan data ke Katalog Unity, siklus hidup tabel dikelola oleh alur Tabel Langsung Delta. Karena alur mengelola siklus hidup dan izin tabel:

  • Saat tabel dihapus dari definisi alur Delta Live Tables, tampilan materialisasi yang sesuai atau entri tabel streaming dihapus dari Katalog Unity pada pembaruan alur berikutnya. Data aktual disimpan untuk jangka waktu tertentu sehingga dapat dipulihkan jika dihapus secara tidak sengaja. Data dapat dipulihkan dengan menambahkan tampilan materialisasi atau tabel streaming kembali ke dalam definisi alur.
  • Menghapus alur Tabel Langsung Delta menghasilkan penghapusan semua tabel yang ditentukan dalam alur tersebut. Karena perubahan ini, UI Tabel Langsung Delta diperbarui untuk meminta Anda mengonfirmasi penghapusan alur.
  • Tabel pendukung internal, termasuk tabel pendukung yang digunakan untuk mendukung APPLY CHANGES INTO, tidak dapat diakses langsung oleh pengguna.

Menulis tabel ke Unity Catalog dari alur Delta Live Tables

Catatan

Jika Anda tidak memilih katalog dan skema target untuk alur, tabel tidak diterbitkan ke Katalog Unity dan hanya dapat diakses oleh kueri dalam alur yang sama.

Untuk menulis tabel Anda ke Katalog Unity, saat Anda membuat alur, pilih Katalog Unity 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 Skema target. Untuk mempelajari tentang katalog Katalog Unity, lihat Katalog. Untuk mempelajari tentang skema di Katalog Unity, lihat Skema.

Menyerap data ke dalam alur Unity Catalog

Alur Anda yang dikonfigurasi untuk menggunakan Unity Catalog dapat membaca data dari:

  • Tabel, tampilan, tampilan, tampilan materialisasi, dan tabel streaming yang dikelola Dan Katalog Unity.
  • Tabel dan tampilan metastore Apache Hive.
  • Auto Loader menggunakan cloud_files() fungsi untuk membaca dari lokasi eksternal Unity Catalog.
  • Apache Kafka dan Amazon Kinesis.

Berikut ini adalah contoh membaca dari Tabel metastore Unity Catalog dan Apache Hive.

Penyerapan batch dari tabel Unity Catalog

SQL

CREATE OR REFRESH LIVE TABLE
  table_name
AS SELECT
  *
FROM
  my_catalog.my_schema.table1;

Python

@dlt.table
def table_name():
  return spark.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")

Menyerap data dari metastore Apache Hive

Alur yang menggunakan Unity Catalog dapat membaca data dari tabel metastore Apache Hive menggunakan hive_metastore katalog:

SQL

CREATE OR REFRESH LIVE TABLE
  table_name
AS SELECT
  *
FROM
  hive_metastore.some_schema.table;

Python

@dlt.table
def table3():
  return spark.table("hive_metastore.some_schema.table")

Menyerap data dari Auto Loader

SQL

CREATE OR REFRESH STREAMING TABLE
  table_name
AS SELECT
  *
FROM
  cloud_files(
    <path-to-uc-external-location>,
    "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}")
 )

Berbagi tampilan materialisasi (tabel langsung)

Secara default, tabel yang dibuat oleh alur hanya dapat dikueri oleh pemilik alur. Anda dapat 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 pilih pada tabel

GRANT SELECT ON TABLE
  my_catalog.my_schema.live_table
TO
  `user@databricks.com`

Mencabut pilih pada tabel

REVOKE SELECT ON TABLE
  my_catalog.my_schema.live_table
FROM
  `user@databricks.com`

Memberikan membuat tabel atau membuat hak istimewa tampilan materialisasi

GRANT CREATE { MATERIALIZED VIEW | TABLE } ON SCHEMA
  my_catalog.my_schema
TO
  { principal | user }

Menampilkan silsilah untuk alur

Silsilah data untuk tabel dalam alur Tabel Langsung Delta terlihat di Catalog Explorer. Untuk tampilan materialisasi atau tabel streaming dalam alur yang mendukung Katalog Unity, UI silsilah Katalog Explorer memperlihatkan tabel hulu dan hilir. Untuk mempelajari selengkapnya tentang silsilah Katalog Unity, lihat Mengambil dan melihat silsilah data menggunakan Katalog Unity.

Untuk tampilan materialisasi atau tabel streaming dalam alur Tabel Langsung Delta yang didukung 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 Peraturan Perlindungan Data Umum (GDPR).

Catatan

  • 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;