Streaming pada komputasi tanpa server

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 pola beban kerja streaming berikut:

  • Kontinu: Pipeline yang berjalan tanpa berhenti dan memproses data baru saat tiba, untuk beban kerja dengan kebutuhan kesegaran yang diukur dalam detik atau menit.
  • Real-time: Pipeline berkelanjutan yang memproses catatan dengan latensi kurang dari satu detik untuk beban kerja operasional yang didukung. Pada serverless, mode real-time tersedia di pipeline Lakeflow. Mode waktu nyata dalam Structured Streaming membutuhkan komputasi klasik.
  • 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 Lakeflow 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.
Pemrosesan operasional yang membutuhkan latensi sub-detik Mode waktu nyata di pipeline Lakeflow pada komputasi tanpa server Mode waktu nyata memproses rekaman saat tiba dalam batch yang berjalan lama. Periksa runtime, sumber, sink, dan persyaratan operator.
Ingesti inkremental dari penyimpanan awan Gunakan Auto Loader di dalam pipeline Lakeflow (untuk latensi rendah) atau di job serverless dengan Trigger.AvailableNow() (jika latensi lebih tinggi 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 terkelola 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 Lakeflow dalam mode berkelanjutan. Alur tetap berjalan, memproses rekaman saat tiba, dan pulih secara otomatis dari kegagalan.

Untuk mengonfigurasi aliran berkelanjutan:

Tip

Pipelining stream diaktifkan secara bawaan dalam pipeline Lakeflow tanpa server. 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 pipeline Lakeflow dalam mode berkelanjutan untuk pola yang selalu aktif. Lihat Batasan streaming. Trigger.Once() didukung tetapi tidak lagi disarankan. Migrasikan kueri yang sudah ada ke Trigger.AvailableNow().

Streaming waktu nyata

Mode waktu nyata di pipeline Lakeflow mendukung beban kerja operasional dengan latensi sub-detik seperti deteksi penipuan dan personalisasi waktu nyata. Tersedia pada komputasi klasik dan serverless. Konfigurasikan alur pembaruan dengan sink yang didukung dan tinjau runtime serta persyaratan operator. Alur pembaruan real-time tidak dapat menulis ke tabel Delta Lake.

Mode pipeline kontinu dan mode waktu nyata memenuhi kebutuhan latensi yang berbeda. Mengaktifkan mode kontinu saja tidak mengaktifkan mode waktu nyata.

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:

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 konsep konektor 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 Lakeflow 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

Batasan streaming berikut berlaku untuk notebook dan job tanpa server. Untuk persyaratan dan batasan pipeline, lihat Konfigurasikan pipeline serverless dan Gunakan mode real-time di pipeline Lakeflow.

  • Pemicu Streaming Terstruktur berbasis waktu (Trigger.ProcessingTime(interval) dan Trigger.Continuous(interval)) tidak didukung dalam buku catatan atau pekerjaan tanpa server. Gunakan alur Lakeflow dalam mode berkelanjutan untuk aliran yang selalu aktif, atau Trigger.AvailableNow() untuk eksekusi yang dipicu. Lihat Batasan streaming.
  • Kueri streaming tanpa pemicu eksplisit gagal dengan INFINITE_STREAMING_TRIGGER_NOT_SUPPORTED. Apache Spark secara default menggunakan Trigger.ProcessingTime("0 seconds"), yang tidak didukung pada komputasi serverless. Selalu atur Trigger.AvailableNow() pada setiap kueri streaming, atau gunakan alur Lakeflow dalam mode berkelanjutan.
  • Semua batasan untuk streaming pada mode akses standar juga berlaku untuk komputasi tanpa server. Lihat Batasan streaming.

Langkah berikutnya