Bagikan melalui


Streaming dan pengumpulan bertahap

Azure Databricks menggunakan Apache Spark Structured Streaming untuk mendukung banyak produk yang terkait dengan beban kerja penyerapan, termasuk:

  • Pemuat Otomatis
  • COPY INTO
  • Jalur DLT
  • Tampilan materialisasi dan tabel streaming pada Databricks SQL

Artikel ini membahas beberapa perbedaan antara semantik pemrosesan batch streaming dan inkremental dan memberikan gambaran umum tingkat tinggi tentang mengonfigurasi beban kerja penyerapan untuk semantik yang diinginkan di Databricks.

Apa perbedaan antara streaming dan penyimpanan batch secara inkremental?

Kemungkinan konfigurasi alur kerja penerimaan data berkisar dari pemrosesan mendekati real-time hingga pemrosesan batch inkremental yang jarang. Kedua pola menggunakan Apache Spark Structured Streaming untuk mendukung pemrosesan bertambah bertahap, tetapi memiliki semantik yang berbeda. Untuk kesederhanaan, artikel ini mengacu pada pemasukan mendekati real-time sebagai pemasukan streaming dan pemrosesan inkremental yang lebih jarang sebagai pemasukan batch inkremental.

Penyerapan streaming

Streaming, dalam konteks penyerapan data dan pembaruan tabel, merujuk pada pemrosesan data mendekati waktu nyata di mana Azure Databricks menyerap rekaman dari sumber ke sink dalam mikrobatch menggunakan infrastruktur yang selalu aktif. Beban kerja streaming terus menyerap pembaruan dari sumber data yang dikonfigurasi, kecuali terjadi kegagalan yang menghentikan penyerapan.

Penyerapan batch bertahap

Pemrosesan batch inkremental mengacu pada pola di mana semua rekaman baru diproses dari sumber data dalam pekerjaan jangka pendek. Penyerapan batch inkremental sering terjadi sesuai dengan jadwal, tetapi juga dapat dipicu secara manual atau berdasarkan kedatangan file.

Pemrosesan batch inkremental berbeda dari pemrosesan batch karena secara otomatis mendeteksi data baru di sumber data dan mengabaikan data yang telah diproses.

Penyerapan dengan Pekerjaan

Pekerjaan Databricks memungkinkan Anda mengatur alur kerja dan menjadwalkan tugas yang menyertakan buku catatan, pustaka, alur DLT, dan kueri Databricks SQL.

Catatan

Anda dapat menggunakan semua jenis komputasi dan jenis tugas Azure Databricks untuk mengonfigurasi penyerapan batch inkremental. Ingesti streaming hanya didukung untuk penggunaan produksi dalam job compute klasik dan DLT.

Pekerjaan memiliki dua mode operasi utama:

  • Pekerjaan kontinu secara otomatis berusaha kembali jika mengalami kegagalan. Mode ini ditujukan untuk pemasukan streaming.
  • Pekerjaan yang dipicu menjalankan tugas saat dipicu. Pemicunya meliputi:
    • Pemicu berbasis waktu yang menjalankan pekerjaan pada jadwal tertentu.
    • Pemicu berbasis file yang menjalankan pekerjaan saat file mendarat di lokasi tertentu.
    • Pemicu lain seperti panggilan REST API, eksekusi perintah Azure Databricks CLI, atau mengklik tombol Jalankan sekarang di UI ruang kerja.

Untuk beban kerja batch inkremental, konfigurasikan pekerjaan Anda menggunakan AvailableNow mode pemicu, sebagai berikut:

Python

(df.writeStream
  .option("checkpointLocation", <checkpoint-path>)
  .trigger(availableNow=True)
  .toTable("table_name")
)

Scala

import org.apache.spark.sql.streaming.Trigger

df.writeStream
  .option("checkpointLocation", <checkpoint-path>)
  .trigger(Trigger.AvailableNow)
  .toTable("table_name")

Untuk beban kerja streaming, interval pemicu default adalah processingTime ="500ms". Contoh berikut menunjukkan cara memproses mikro-batch setiap 5 detik:

Python

(df.writeStream
  .option("checkpointLocation", <checkpoint-path>)
  .trigger(processingTime="5 seconds")
  .toTable("table_name")
)

Scala

import org.apache.spark.sql.streaming.Trigger

df.writeStream
  .option("checkpointLocation", <checkpoint-path>)
  .trigger(Trigger.ProcessingTime, "5 seconds")
  .toTable("table_name")

Penting

Pekerjaan tanpa server tidak mendukung Scala, mode berkelanjutan, atau interval pemicu berbasis waktu untuk Streaming Terstruktur. Gunakan tugas klasik jika Anda membutuhkan pemrosesan data hampir real-time.

Penyerapan dengan DLT

Mirip dengan Jobs, alur DLT dapat berjalan dalam mode terpicu atau berkelanjutan. Untuk semantik streaming nyaris real-time dengan tabel streaming, gunakan mode kontinu.

Gunakan tabel streaming untuk mengonfigurasi streaming atau penyerapan batch bertahap dari penyimpanan objek cloud, Apache Kafka, Amazon Kinesis, Google Pub/Sub, atau Apache Pulsar.

Lakeflow Connect menggunakan DLT untuk mengonfigurasi alur penyerapan dari sistem yang terhubung. Lihat Lakeflow Connect.

Tampilan materialisasi menjamin semantik operasi yang setara dengan beban kerja batch, tetapi dapat mengoptimalkan banyak operasi untuk menghitung hasil secara bertahap. Lihat Penyegaran inkremental untuk tampilan materialisasi.

Penyerapan dengan Databricks SQL

Anda dapat menggunakan tabel streaming untuk mengonfigurasi penyerapan batch inkremental dari penyimpanan objek cloud, Apache Kafka, Amazon Kinesis, Google Pub/Sub, atau Apache Pulsar.

Anda dapat menggunakan tampilan materialisasi untuk mengonfigurasi pemrosesan batch bertahap dari sumber Delta. Lihat Penyegaran Inkremental untuk Tampilan Materialisasi.

COPY INTO menyediakan sintaks SQL yang familier untuk pemrosesan batch inkremental untuk file data di penyimpanan objek cloud. perilaku COPY INTO mirip dengan pola yang didukung oleh tabel streaming untuk penyimpanan objek cloud, tetapi tidak semua pengaturan default setara untuk semua format file yang didukung.