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.
Halaman ini menjelaskan cara memilih konfigurasi yang tepat untuk beban kerja streaming tanpa server pada Azure Databricks, termasuk alur berkelanjutan, penyerapan inkremental, dan konektor terkelola. Memilih konfigurasi yang tepat tergantung pada kebutuhan sumber, bentuk, dan latensi aliran.
Apa yang dihitung sebagai beban kerja streaming
Beban kerja streaming membaca data yang tidak terbatas dari sumber (seperti penyimpanan objek cloud, bus pesan, atau umpan perubahan) dan menulis ke sink secara bertahap. Azure Databricks mendukung dua pola beban kerja streaming:
- Berkelanjutan: Alur yang berjalan tanpa menghentikan dan memproses data baru saat tiba. Latensi diukur dalam hitungan detik.
- Inkremental (juga disebut dipicu): Pipeline yang dijalankan berdasarkan jadwal atau pemicu, memproses semua data yang telah masuk sejak eksekusi terakhir, lalu berhenti. Latensi diukur dalam hitungan menit.
Beberapa beban kerja tampaknya merupakan alur streaming tetapi bukan alur secara teknis. Contohnya termasuk layanan yang menyimpan websocket terbuka untuk mendengarkan peristiwa, aplikasi obrolan yang mempertahankan koneksi persisten per pengguna, atau penerima webhook yang menangani permintaan HTTP masuk. Ini adalah aplikasi, bukan alur streaming. Untuk opsi tanpa server yang tepat untuk beban kerja tersebut, lihat Beban kerja yang bukan alur streaming.
Pilih konfigurasi streaming yang tepat
Tabel ini memetakan kasus penggunaan ke konfigurasi tanpa server yang paling sesuai dengannya. Bagian berikut di halaman ini memberikan detail selengkapnya tentang rekomendasi ini.
| Skenario penggunaan | Konfigurasi yang disarankan | Mengapa |
|---|---|---|
| ETL atau transformasi streaming berlatensi rendah yang berkelanjutan | Alur Deklaratif Lakeflow Spark dalam mode berkelanjutan | Mode berkelanjutan dirancang untuk stream yang selalu aktif. Pemipaan aliran menjalankan mikrobatch secara bersamaan, meningkatkan throughput dan mengurangi latensi. Status terkelola menjaga pemulihan tetap otomatis. |
| Ingesti inkremental dari penyimpanan awan | Gunakan Auto Loader di dalam Alur Deklaratif Lakeflow Spark (untuk latensi rendah) atau dalam pekerjaan tanpa server dengan Trigger.AvailableNow() (jika latensi yang lebih rendah dapat diterima). |
Auto Loader melacak file baru secara efisien.
Trigger.AvailableNow() memproses backlog, lalu keluar, yang sesuai dengan irama terjadwal atau sesuai permintaan. |
| Penyerapan terkelola dari sumber SaaS atau CDC database | Konektor standar di Lakeflow Connect | Konektor yang dikelola sepenuhnya dengan alur penyerapan tanpa server. Tidak ada kode yang diperlukan untuk sumber yang didukung. |
| Streaming SQL melalui tabel Delta | Tabel streaming | Pemrosesan inkremental asli SQL untuk sumber berorientasi tambahan, dengan alur terkelola dan refresh. |
| Pemrosesan batch mikro berkala dalam buku catatan atau pekerjaan |
Pekerjaan tanpa server dengan Trigger.AvailableNow() |
Hemat biaya jika kesegaran data per menit sudah memadai. Komputasi tanpa server dimulai dengan cepat dan keluar ketika batch selesai. |
Streaming berkelanjutan
Untuk streaming berkelanjutan pada komputasi tanpa server, gunakan Alur Deklaratif Lakeflow Spark dalam mode berkelanjutan. Alur tetap berjalan, memproses rekaman saat tiba, dan pulih secara otomatis dari kegagalan.
Untuk mengonfigurasi aliran berkelanjutan:
- Konfigurasikan alur sebagai tanpa server. Lihat Mengonfigurasi alur tanpa server.
- Atur mode alur ke berkelanjutan. Lihat Mode dipicu vs. mode jalur berkelanjutan.
- Gunakan tabel streaming untuk output yang dikelola secara bertahap.
Tip
Pipelining aliran aktif secara default di Pipeline Deklaratif Lakeflow Spark nirserver. Mikrobatch berjalan secara paralel, bukan secara berurutan, yang meningkatkan throughput untuk aliran dengan beban ingestion yang tinggi.
Pemicu Streaming Terstruktur berbasis waktu, seperti Trigger.ProcessingTime(interval) dan Trigger.Continuous(interval), tidak tersedia di buku catatan atau pekerjaan tanpa server. Gunakan Lakeflow Spark Declarative Pipelines dalam mode kontinu untuk pola yang selalu aktif. Lihat Batasan streaming.
Trigger.Once() didukung tetapi tidak digunakan lagi — migrasikan kueri yang ada ke Trigger.AvailableNow().
Streaming bertahap dan yang dipicu
Untuk streaming bertahap, jalankan Streaming Terstruktur dengan Trigger.AvailableNow() dalam pekerjaan tanpa server. Setiap proses memproses semua data yang telah tiba sejak titik pemeriksaan terakhir dan kemudian keluar.
Untuk mengonfigurasi pekerjaan tanpa server dengan streaming bertahap:
- Jadwalkan pekerjaan sesuai interval yang Anda butuhkan. Lihat Menjalankan pekerjaan sesuai jadwal.
- Gunakan
Trigger.AvailableNow()pada setiap kueri streaming dalam pekerjaan. Lihat Konfigurasi Interval Pemicu Streaming Terstruktur. - Sesuaikan ukuran batch dengan
maxFilesPerTriggerataumaxBytesPerTriggeruntuk menjaga memori tetap dapat diprediksi. Lihat Praktik terbaik untuk komputasi tanpa server.
Contoh berikut membaca file baru dari penyimpanan cloud (source_path) dengan Auto Loader, memproses semua data yang tersedia pada saat eksekusi, dan menulis ke tabel Delta:
(spark.readStream
.format("cloudFiles")
.option("cloudFiles.format", "json")
.option("cloudFiles.maxFilesPerTrigger", 1000)
.load(source_path)
.writeStream
.trigger(availableNow=True)
.option("checkpointLocation", checkpoint_path)
.toTable("catalog.schema.target_table"))
Pekerjaan terjadwal Trigger.AvailableNow() adalah pola streaming yang paling hemat biaya pada komputasi tanpa server ketika latensi tingkat menit dapat diterima. Komputasi dimulai dalam hitungan detik, menjalankan pekerjaan batch, lalu berhenti.
Penyerapan terkelola
Jika sumbernya adalah aplikasi SaaS atau database operasional, gunakan Lakeflow Connect alih-alih menulis kode Streaming Terstruktur. Lakeflow Connect menjalankan alur penyerapan tanpa server untuk konektor seperti Salesforce, Workday, SQL Server CDC, dan PostgreSQL CDC. Lihat Penghubung Terkelola di Lakeflow Connect.
Jalur ini adalah jawaban yang tepat ketika:
- Konektor ada untuk sumber Anda.
- Anda menginginkan alur terkelola daripada kode kustom.
- Anda memerlukan evolusi skema, silsilah data, dan pemantauan di luar kotak.
Pemrosesan data inkremental yang dikelola SQL
Untuk tim yang mengutamakan SQL, gunakan tabel streaming untuk beban kerja streaming berbasis SQL. Anda dapat menentukan tabel streaming di dalam Alur Deklaratif Lakeflow Spark atau sebagai tabel streaming mandiri.
Untuk tabel streaming mandiri yang dibuat dengan CREATE OR REFRESH STREAMING TABLE pernyataan SQL, refresh data awal dan populasi segera dimulai. Alur tanpa server khusus secara otomatis dibuat dan dikelola oleh sistem untuk setiap tabel streaming.
Jika Anda memerlukan hasil kueri semantik batch dengan refresh terkelola, gunakan tampilan materialisasi sebagai gantinya. Lihat Tampilan termaterialisasi.
Beban kerja yang bukan pipeline streaming
Beban kerja yang perlu mempertahankan koneksi jangka panjang, mendengarkan pada port, atau merespons permintaan HTTP yang masuk bukanlah pipeline streaming; melainkan sebuah aplikasi. Jangan jalankan beban kerja ini pada pekerjaan tanpa server. Opsi Databricks yang tepat adalah:
- Layanan jangka panjang yang memerlukan koneksi persisten atau titik akhir HTTP: Bangun layanan dengan Aplikasi Databricks. Aplikasi Databricks adalah platform tanpa server untuk menghosting aplikasi kustom di Azure Databricks, termasuk aplikasi FastAPI, Flask, Streamlit, Dash, Gradio, Node.js, dan Shiny. Lihat Aplikasi Databricks.
- Webhook masuk atau pendengar peristiwa: Mengekspos titik akhir HTTP di Aplikasi Databricks atau menghentikan webhook dalam layanan eksternal dan menulis peristiwa ke penyimpanan cloud atau bus pesan, lalu mengambilnya dengan alur streaming tanpa server.
- Token kustom atau pertukaran kredensial: Gunakan perwakilan layanan dengan OAuth, atau panggil API REST Databricks dari aplikasi. Alur streaming tidak menyimpan sesi per pengguna atau status token kustom.
Jika Anda mengevaluasi apakah beban kerja Anda sesuai dengan alur streaming, tanyakan:
- Apakah beban kerja dibaca dari sumber data yang tidak terbatas dan menulis ke sink? Jika ya, itu adalah alur streaming.
- Apakah beban kerja perlu mempertahankan koneksi tetap terbuka ke klien? Jika ya, itu adalah aplikasi; gunakan Aplikasi Databricks.
Keterbatasan
Komputasi tanpa server memberlakukan batasan streaming berikut. Tidak satu pun dari mereka mencegah beban kerja di atas ketika dipasangkan dengan produk yang tepat.
- Pemicu Streaming Terstruktur berbasis waktu (
Trigger.ProcessingTime(interval)danTrigger.Continuous(interval)) tidak didukung dalam buku catatan atau pekerjaan tanpa server. Gunakan Alur Deklaratif Lakeflow Spark dalam mode berkelanjutan untuk aliran yang selalu aktif, atauTrigger.AvailableNow()untuk eksekusi yang dipicu. Lihat Batasan streaming. - Kueri streaming tanpa pemicu eksplisit gagal dengan
INFINITE_STREAMING_TRIGGER_NOT_SUPPORTED. Apache Spark secara default menggunakanTrigger.ProcessingTime("0 seconds"), yang tidak didukung pada komputasi serverless. Selalu aturTrigger.AvailableNow()pada setiap kueri streaming, atau gunakan Alur Deklaratif Lakeflow Spark dalam mode berkelanjutan. - Semua batasan untuk streaming pada mode akses standar juga berlaku untuk komputasi tanpa server. Lihat Batasan streaming.
Langkah berikutnya
- Mengonfigurasi alur tanpa server
- Menjalankan Pekerjaan Lakeflow pada komputasi tanpa server
- Jelajahi konektor terkelola di Lakeflow Connect