Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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.
Penting
Azure Databricks merekomendasikan agar Anda mengatur mode pemicu yang menyeimbangkan latensi dan biaya untuk kasus penggunaan Anda. Jika tidak, Anda mungkin melihat biaya penyimpanan tak terduga dari penyedia layanan cloud Anda. Lihat Mengontrol biaya penyimpanan cloud untuk detailnya.
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. |
:::note Komputasi tanpa server
Pada komputasi tanpa server, hanya Trigger.AvailableNow() dan Trigger.Once() didukung. Databricks merekomendasikan Trigger.AvailableNow().
Untuk streaming berkelanjutan pada komputasi tanpa server, gunakan mode alur yang dipicu atau berkelanjutan dalam mode berkelanjutan.
Lihat Batasan streaming.
:::
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 ke atas, 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 inkremental 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
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.
Mengontrol biaya penyimpanan cloud
Secara default, jika Anda tidak mengatur mode pemicu, Streaming Terstruktur mengatur mode pemicu ke processingTime dan interval ke 0, yang memeriksa data baru setiap beberapa milidetik. Ini dapat menghasilkan panggilan API penyimpanan cloud dalam volume tinggi per hari dan menghasilkan biaya tak terduga dari penyedia cloud Anda.
Azure Databricks menyarankan agar Anda mengonfigurasi mode pemicu yang sesuai untuk latensi dan persyaratan biaya Anda. Lihat processingTime untuk informasi tentang mengonfigurasi interval pemicu berbasis waktu.
Mengatur interval pemicu antar pelaksanaan
Anda dapat mengubah interval pemicu antara eksekusi saat menggunakan titik pemeriksaan yang sama.
Perilaku saat mengubah interval
Jika kueri Streaming Terstruktur berhenti saat mikro-batch sedang diproses, batch mikro tersebut harus diselesaikan sebelum interval pemicu baru berlaku. Setelah mengubah interval pemicu, Anda mungkin melihat bahwa proses mikro-batch berlangsung dengan konfigurasi yang ditentukan sebelumnya. Berikut ini menjelaskan perilaku yang diharapkan setelah transisi:
-
Dari interval berbasis waktu hingga
AvailableNow: Batch mikro mungkin diproses seperti batch inkremental sebelum semua rekaman yang tersedia diproses. -
Dari
AvailableNowke interval berbasis waktu: Pemrosesan mungkin berlanjut untuk semua rekaman yang tersedia saat pekerjaan terakhirAvailableNowdipicu.
Pemulihan dari kegagalan kueri
Jika Anda mencoba memulihkan diri dari kegagalan kueri dengan batch inkremental, perubahan interval pemicu tidak menyelesaikan permasalahan. Batch yang gagal sebelumnya harus diselesaikan karena Streaming Terstruktur memerlukan batch mikro idempogen. Lihat semantik toleransi kesalahan untuk Apache Spark.
Untuk mengatasi kegagalan, tingkatkan skala kapasitas komputasi, seperti meningkatkan ukuran node pekerja. Dalam kasus yang jarang terjadi, Anda mungkin perlu memulai ulang aliran dengan titik pemeriksaan baru.