Menggunakan Unity Catalog dengan Streaming Terstruktur

Halaman ini memperlihatkan cara menggunakan Streaming Terstruktur dengan Unity Catalog untuk mengelola tata kelola data untuk beban kerja inkremental dan streaming Anda di Azure Databricks.

Fungsionalitas Streaming Terstruktur apa yang didukung Oleh Katalog Unity?

Katalog Unity tidak menambahkan batas eksplisit untuk sumber dan sink Streaming Terstruktur yang tersedia di Azure Databricks.

Dengan Katalog Unity dan Streaming Terstruktur, Anda dapat:

  • Streaming data dari tabel terkelola dan eksternal. Lihat tabel terkelola Unity Catalog untuk Delta Lake dan Apache Iceberg.
  • Gunakan lokasi eksternal yang dikelola oleh Unity Catalog untuk berinteraksi dengan data menggunakan URI penyimpanan objek.
  • Tulis ke tabel eksternal menggunakan nama tabel atau jalur file. Untuk berinteraksi dengan tabel terkelola, Anda harus menggunakan nama tabel.

Untuk titik pemeriksaan Streaming Terstruktur, Anda harus menggunakan jalur di lokasi eksternal yang dikelola oleh Katalog Unity. Untuk mempelajari selengkapnya tentang menyambungkan penyimpanan dengan aman dengan Unity Catalog, lihat Menyambungkan ke penyimpanan objek cloud menggunakan Katalog Unity.

Membaca tampilan Katalog Unity sebagai aliran

Di Databricks Runtime 14.3 LTS ke atas, Anda dapat menggunakan Streaming Terstruktur untuk membaca dari tampilan yang terdaftar di Unity Catalog. Tabel dasar harus menggunakan format Delta Lake. Untuk batasan lainnya, lihat Batasan.

Untuk membaca tampilan dengan Streaming Terstruktur, gunakan .table() metode dengan pengidentifikasi tampilan:

df = (spark.readStream
  .table("demoView")
)

Pengguna harus memiliki SELECT hak istimewa pada tampilan target.

Jika Anda mengubah definisi tampilan untuk menambahkan atau mengubah tabel yang dirujuk dalam tampilan, Anda tidak dapat menggunakan titik pemeriksaan streaming yang sama.

Opsi streaming yang didukung

Pembaca streaming menerapkan opsi ke file dan metadata tabel Delta Lake yang mendasar untuk tampilan yang ditentukan.

Opsi berikut ini didukung:

  • maxFilesPerTrigger
  • maxBytesPerTrigger
  • ignoreDeletes
  • skipChangeCommits
  • withEventTimeOrder
  • startingTimestamp
  • startingVersion

Operasi baca pada view dengan UNION ALL tidak mendukung opsi withEventTimeOrder dan startingVersion.

Jika Anda menyediakan opsi yang tidak didukung, seperti readChangeFeed, Spark akan menaikkan pengecualian ini:

AnalysisException: [UNSUPPORTED_STREAMING_OPTIONS_FOR_VIEW.UNSUPPORTED_OPTION] Unsupported for streaming a view. Reason: option <option> is not supported.

Operasi streaming yang didukung

Operasi yang didukung meliputi:

Pengoperasian Deskripsi Operator Example
Proyek Mengontrol izin tingkat kolom SELECT... FROM... CREATE VIEW project_view AS SELECT id, value FROM source_table
Filter Mengatur izin pada tingkat baris WHERE... CREATE VIEW filter_view AS SELECT * FROM source_table WHERE value > 100
Satukan semua Hasil dari beberapa tabel UNION ALL CREATE VIEW union_view AS SELECT id, value FROM source_table1 UNION ALL SELECT * FROM source_table2

Operasi yang tidak didukung termasuk agregasi, pengurutan, dan fungsi bernilai tabel seperti table_changes(). Untuk detail tentang fungsi bernilai tabel, lihat Pemanggilan fungsi bernilai tabel (TVF).

Jika Anda melakukan streaming dari tampilan dengan operasi yang tidak didukung, Spark akan menaikkan pengecualian ini:

UnsupportedOperationException: [UNEXPECTED_OPERATOR_IN_STREAMING_VIEW] Unexpected operator <operator> in the CREATE VIEW statement as a streaming source. A streaming view query must consist only of SELECT, WHERE, and UNION ALL operations.

Batasan

  • Mode pemrosesan berkelanjutan Apache Spark tidak didukung. Lihat Pemrosesan Berkelanjutan di Panduan Pemrograman Streaming Terstruktur Spark.
  • Untuk daftar fitur Streaming Terstruktur yang tidak didukung pada Unity Catalog berdasarkan mode akses komputasi, lihat Batasan streaming dan Persyaratan streaming dan tampilan materialisasi pada komputasi khusus.
  • Tampilan sebagai sumber streaming memiliki batasan tambahan:
    • Anda hanya dapat melakukan streaming dari tampilan yang mengkueri tabel Delta Lake. Sumber data lain tidak didukung.
    • Anda harus mendaftarkan tampilan dengan Katalog Unity. Lihat Membuat tampilan.
    • Pembacaan streaming pada tampilan tidak mendukung semua operasi atau opsi. Lihat Operasi streaming yang didukung dan Opsi streaming yang didukung.
    • Jika Anda menambahkan kolom baru ke view sebelum stream memperbarui skema tabel yang mendasarinya, stream gagal dengan error kolom hilang. Anda harus menambahkan kolom baru ke tabel yang mendasar, menunggu aliran memproses versi tabel tersebut, lalu menambahkan kolom ke tampilan.