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 以支援串流工作負載,並確保治理和存取控制。 |