結構化串流概念

Apache Spark 結構化串流讓你能用與批次處理相同的 Spark API 來建立串流應用程式和管線。 在 Azure Databricks 上,它支援兩種處理模式:

  • 即時模式(RTM):設計用於亞秒級的操作負載,如詐欺偵測與即時個人化。 RTM 會即時處理紀錄,端對端延遲低至五毫秒。 詳見 即時模式概念。
  • 微批次模式:設計用於分析管線及擷取、轉換與載入(ETL)工作負載。 微批次模式以小批次處理串流,平衡計算成本與以秒或分鐘計算的延遲需求。 微批次處理是預設模式。

這兩種模式都使用相同的結構化串流 API。 對於兩種模式都支援的查詢,你可以透過觸發器和計算設定切換模式。 請參見 設定即時模式。

結構化串流也為基於 Apache Spark™ 宣告式管線建置的 Lakeflow 管線中的串流提供支援。 管線負責管理編排、檢查點和恢復,而你則用 SQL 或 Python 定義轉換。

如需逐步教學,請參見 「執行你的第一個結構化串流工作負載」。

從資料流讀取

使用結構化串流(Structured Streaming)從支援的資料來源逐步擷取資料。

Feature 說明
自動裝載機 當新資料檔案進入雲端儲存時,逐步且有效率地處理。
Delta Lake 資料表的串流讀取和寫入 使用 Delta Lake 資料表作為串流來源和接收端,並保證精確一次處理。
SQL 與 Spark API 使用 SQL 與 Spark API 連接訊息匯流排、佇列及企業應用程式。
微批次尺寸 限制輸入速率以維持批次大小一致並防止處理延誤。

將資料寫入資料接收器

設定結構化串流如何將資料傳送到目標系統。

Feature 說明
檢查點 儲存處理狀態以啟用容錯性及精確一次傳遞語意。
輸出模式 選擇附加模式、更新模式和完成模式來進行有狀態串流查詢。
觸發間隔 設定觸發間隔以平衡延遲與成本,以符合你的處理需求。
結構化串流中的即時模式 處理即時工作負載的資料,端到端延遲低至五毫秒。

有狀態與無狀態處理

無狀態查詢處理資料列時不保留狀態。 有狀態查詢會維持聚合、連接和去重的中間狀態。

Feature 說明
無狀態串流查詢 優化查詢,處理資料且不維持中間狀態。
浮水印 控制結構化串流在有狀態作業中等待遲到資料的時間。
有狀態串流 使用有狀態運算子管理聚合、串流連接及重複刪除。

監視及管理

追蹤查詢效能、套用優化,並管理生產環境結構化串流工作負載的資料存取。

Feature 說明
透過 StreamingQueryListener 進行監控 使用 Spark UI 與監聽器 API 追蹤查詢進度與效能指標。
教學:使用 StreamingQueryListener 監控查詢 附加監聽器,並將查詢進度指標記錄到 Unity Catalog 資料表。
以 Unity Catalog 管理和控制 配置 Unity Catalog 以支援串流工作負載,並確保治理和存取控制。