Bagikan melalui


Mengonfigurasi interval pemicu Streaming Terstruktur

Artikel ini menjelaskan cara mengonfigurasi interval pemicu untuk Streaming Terstruktur di Azure Databricks.

Apache Spark Structured Streaming memproses data secara bertahap. Interval pemicu mengontrol seberapa sering Streaming Terstruktur memeriksa data baru. Anda dapat mengonfigurasi interval pemicu untuk pemrosesan hampir real-time, untuk refresh database terjadwal, atau pemrosesan batch semua data baru selama sehari atau seminggu.

Karena Apa itu Auto Loader? menggunakan Streaming Terstruktur untuk memuat data, memahami cara kerja pemicu memberi Anda fleksibilitas terbesar untuk mengontrol biaya saat menyerap data dengan frekuensi yang diinginkan.

Gambaran umum mode pemicu

Tabel berikut ini meringkas mode pemicu yang tersedia di Streaming Terstruktur:

Mode Pemicu Contoh Sintaks (Python) Terbaik untuk
Tidak ditentukan (Default) N/A Streaming tujuan umum dengan latensi 3-5 detik. Setara dengan pemicu waktu pemrosesan dengan interval 0 ms. Pemrosesan streaming berjalan terus menerus selama data baru tiba.
Waktu Pemrosesan .trigger(processingTime='10 seconds') Menyeimbangkan biaya dan performa. Mengurangi overhead dengan mencegah sistem memeriksa data terlalu sering.
Tersedia Sekarang .trigger(availableNow=True) Pemrosesan batch inkremental terjadwal. Memproses sebanyak data yang tersedia pada saat tugas streaming dipicu.
Mode Real-time .trigger(realTime='5 minutes') Beban kerja operasional dengan latensi ultra-rendah yang memerlukan pemrosesan sub-detik, seperti deteksi penipuan atau personalisasi waktu nyata. Pratinjau Publik '5 menit' menunjukkan durasi dari sebuah mikro-batch. Gunakan 5 menit untuk meminimalkan beban tambahan setiap batch, seperti kompilasi kueri.
Berkelanjutan .trigger(continuous='1 second') Tidak didukung. Ini adalah fitur eksperimental yang disertakan dalam Spark OSS. Gunakan mode real-time sebagai gantinya.

processingTime: Interval pemicu berbasis waktu

Streaming Terstruktur mengacu pada interval pemicu berbasis waktu sebagai "micro-batch interval tetap". processingTime Menggunakan kata kunci, tentukan durasi waktu sebagai string, seperti .trigger(processingTime='10 seconds').

Konfigurasi interval ini menentukan seberapa sering sistem melakukan pemeriksaan untuk melihat apakah data baru telah tiba. Konfigurasikan waktu pemrosesan Anda untuk menyeimbangkan persyaratan latensi dan tingkat data yang tiba di sumbernya.

AvailableNow: Pemrosesan batch bertahap

Penting

Di Databricks Runtime 11.3 LTS dan yang lebih baru, Trigger.Once tidak digunakan lagi. Gunakan Trigger.AvailableNow untuk semua beban kerja pemrosesan batch bertahap.

Opsi AvailableNow pemicu menggunakan semua rekaman yang tersedia sebagai batch inkremental dengan kemampuan untuk mengonfigurasi ukuran batch dengan opsi seperti maxBytesPerTrigger. Opsi ukuran bervariasi menurut sumber data.

Sumber data yang didukung

Azure Databricks mendukung penggunaan Trigger.AvailableNow untuk pemrosesan batch bertahap dari banyak sumber Streaming Terstruktur. Tabel berikut ini menyertakan versi Databricks Runtime minimum yang didukung yang diperlukan untuk setiap sumber data:

Sumber Versi Minimum Runtime Databricks
Sumber file (JSON, Parquet, dll.) 9.1 LTS
Danau Delta 10.4 LTS
Loader Otomatis 10.4 LTS
Apache Kafka 10.4 LTS
Kinetika 13.1

realTime: Beban kerja aplikasi operasional dengan latensi ultra-rendah

Penting

Fitur ini ada di Pratinjau Umum.

Mode waktu nyata untuk Streaming Terstruktur mencapai latensi end-to-end di bawah 1 detik pada titik akhir, dan dalam kasus umum sekitar 300 ms. Untuk detail selengkapnya tentang cara mengonfigurasi dan menggunakan mode real time secara efektif, lihat Mode real time di Streaming Terstruktur.

Apache Spark memiliki interval pemicu tambahan yang dikenal sebagai Pemrosesan Berkelanjutan. Mode ini telah diklasifikasikan sebagai eksperimental sejak Spark 2.3. Azure Databricks tidak mendukung atau merekomendasikan mode ini. Gunakan mode real time sebagai gantinya untuk kasus penggunaan latensi rendah.

Catatan

Mode pemrosesan berkelanjutan di halaman ini tidak terkait dengan pemrosesan berkelanjutan di Alur Deklaratif Lakeflow Spark.

Mengatur interval pemicu antar pelaksanaan

Anda dapat mengubah interval pemicu antara eksekusi saat menggunakan titik pemeriksaan yang sama.

Perilaku saat mengubah interval

Jika pekerjaan Streaming Terstruktur berhenti saat mikro-batch sedang diproses, mikro-batch tersebut harus diselesaikan sebelum interval pemicu baru berlaku. Sebagai hasilnya, setelah Anda mengubah interval pemicu, Anda mungkin akan mengamati pemrosesan mikro-batch dengan pengaturan yang telah ditentukan sebelumnya. Berikut ini menjelaskan perilaku yang diharapkan saat transisi:

  • Transisi dari interval berbasis waktu ke AvailableNow: Batch mikro mungkin diproses sebelum memproses semua rekaman yang tersedia sebagai batch inkremental.

  • Transisi dari AvailableNow ke interval berbasis waktu: Pemrosesan mungkin berlanjut untuk semua rekaman yang tersedia saat pekerjaan terakhir AvailableNow dipicu. Ini adalah perilaku yang diharapkan.

Memulihkan dari kegagalan kueri

Catatan

Jika Anda mencoba memulihkan dari kegagalan kueri yang terkait dengan batch inkremental, mengubah interval pemicu tidak akan memecahkan masalah ini karena batch tetap harus diselesaikan. Tingkatkan kapasitas komputasi yang digunakan untuk memproses batch untuk mencoba menyelesaikan masalah. Dalam kasus yang jarang terjadi, Anda mungkin perlu memulai ulang aliran dengan titik pemeriksaan baru.