Bagikan melalui


Membaca informasi status Streaming Terstruktur

Dalam Databricks Runtime 14.3 LTS ke atas pada komputasi yang dikonfigurasi dengan mode akses khusus atau tanpa isolasi, Anda dapat menggunakan operasi DataFrame atau fungsi nilai tabel SQL untuk mengkueri data dan metadata status Streaming Terstruktur. Anda dapat menggunakan fungsi-fungsi ini untuk mengamati informasi keadaan untuk kueri Streaming Terstruktur yang bersifat stateful, yang dapat berguna untuk pemantauan dan debugging kesalahan.

Anda harus memiliki akses baca ke jalur cek poin untuk kueri streaming agar dapat mengkueri data status dan metadata. Fungsi yang dijelaskan dalam artikel ini menyediakan akses baca-saja ke data status dan metadata. Anda hanya dapat menggunakan semantik baca batch untuk mengkueri informasi status.

Catatan

Anda tidak dapat meminta informasi status untuk alur DLT, tabel streaming, atau tampilan materialisasi. Anda tidak dapat meminta kueri informasi status menggunakan komputasi tanpa server atau komputasi yang dikonfigurasi dengan mode akses standar.

Membaca status penyimpanan Streaming Terstruktur

Anda dapat membaca informasi penyimpanan status untuk kueri Streaming Terstruktur yang dijalankan dalam Databricks Runtime yang didukung. Gunakan sintaks berikut:

Python

df = (spark.read
  .format("statestore")
  .load("/checkpoint/path"))

SQL

SELECT * FROM read_statestore('/checkpoint/path')

Konfigurasi opsional berikut didukung:

Opsi Jenis Nilai bawaan Deskripsi
batchId Panjang Batch ID terbaru Mewakili batch target untuk dibaca. Tentukan opsi ini untuk mengkueri informasi status untuk status kueri sebelumnya. Batch harus dikomitmenkan tetapi belum dibersihkan.
operatorId Panjang 0 Mewakili operator target untuk dibaca. Opsi ini digunakan saat kueri menggunakan beberapa operator stateful.
storeName String "BAWAAN" Mewakili nama penyimpanan status target untuk dibaca. Opsi ini digunakan saat operator stateful menggunakan beberapa instans penyimpanan status. Baik storeName atau joinSide harus ditentukan untuk gabungan stream-steam, tetapi tidak keduanya.
joinSide String ("kiri" atau "kanan") Mewakili sisi target tempat membaca. Opsi ini digunakan saat pengguna ingin membaca status dari penggabungan stream-stream.

Data yang dikembalikan memiliki skema berikut:

Kolom Jenis Deskripsi
key Struct (jenis lebih lanjut berasal dari kunci status) Kunci untuk rekaman operator stateful di titik pemeriksaan status.
value Struct (tipe lanjutan diturunkan dari nilai keadaan) Nilai untuk catatan operator stateful di titik pemeriksaan status.
partition_id Bilangan bulat Partisi titik pemeriksaan status yang berisi catatan operator berbasis status.

Membaca metadata status Streaming Terstruktur

Penting

Anda harus menjalankan kueri streaming pada Databricks Runtime 14.2 atau lebih tinggi untuk merekam metadata status. File metadata status tidak mengganggu kompatibilitas mundur. Jika Anda memilih untuk menjalankan kueri streaming pada Databricks Runtime 14.1 atau di bawahnya, file metadata status yang ada diabaikan dan tidak ada file metadata status baru yang ditulis.

Anda dapat membaca informasi metadata status untuk kueri Streaming Terstruktur yang dijalankan pada Databricks Runtime 14.2 atau yang lebih baru. Gunakan sintaks berikut:

Python

df = (spark.read
  .format("state-metadata")
  .load("<checkpointLocation>"))

SQL

SELECT * FROM read_state_metadata('/checkpoint/path')

Data yang dikembalikan memiliki skema berikut:

Kolom Jenis Deskripsi
operatorId Bilangan bulat ID angka bulat dari operator streaming yang bersifat stateful.
operatorName Bilangan bulat Nama operator stateful streaming.
stateStoreName String Nama penyimpanan status operator.
numPartitions Bilangan bulat Jumlah partisi penyimpanan status.
minBatchId Panjang ID batch minimum yang tersedia untuk status kueri.
maxBatchId Panjang ID batch maksimum yang tersedia untuk melakukan kueri status.

Catatan

Nilai ID batch yang disediakan oleh minBatchId dan maxBatchId mencerminkan status pada saat titik pemeriksaan ditulis. Batch lama dibersihkan secara otomatis dengan eksekusi mikro-batch, sehingga nilai yang disediakan di sini tidak dijamin masih tersedia.