湖流管線中的匯

預設情況下,管線流程會將結果寫入由 Unity 目錄管理的 Delta 表格,通常是串流資料表或實體化檢視表。 Sinks 是一種替代性輸出目標,可讓您將轉換後的資料寫入 Databricks 管理的儲存體之外的目的地,例如事件串流服務或自訂資料存放區。

你使用其中一個接收端 API 來定義接收端,然後在你的 update_flow 或 target 定義中將它作為 append_flow 來參照。

什麼時候該使用水槽

Databricks 建議在需要時使用匯流:

  • 建立低延遲的營運應用案例,例如詐騙偵測、即時分析或客戶推薦,這些情況下資料必須流向訊息匯流排而非雲端儲存。 對於需要毫秒延遲時間的工作負載,請參閱 在 Lakeflow 管線中使用即時模式。
  • 將轉換後的資料寫入由外部 Delta 實例管理的資料表,包括 Unity Catalog 管理的資料表及外部資料表。
  • 對外部系統執行反向 ETL,例如將處理過的資料寫回 Apache Kafka 主題,供 Azure Databricks 外部使用。
  • 以 Azure Databricks 原生不支援的格式撰寫,使用 Python 自訂資料來源。

水槽類型

管線支援下列接收端類型:

水槽類型 說明
Delta 資料表接收端 寫入受 Unity Catalog 管理的或外部 Delta 資料表。 指定檔案路徑或完全限定的資料表名稱。
Apache Kafka 匯入點 利用管線執行時內建的 Kafka 連接器,寫入 Apache Kafka 主題。
Azure 事件中樞接收端 使用 Kafka 介面寫入 Azure 事件中樞。 使用與卡夫卡水槽相同的選項。
Python 自訂接收器 使用註冊於 spark.dataSource.register. 的 Python 自訂資料來源寫入任何資料庫。
ForEachBatch 下沉 對每個微批次的串流資料套用自訂的 Python 邏輯。 適用於需要寫入多個目的地、執行 upsert 作業,或使用不原生支援串流寫入的目標時。
ForEach 接收端 對每一列串流資料套用自訂的 Python 邏輯。 當你需要將每筆記錄寫入沒有內建接收端的目的地時,例如外部 API 或金鑰值儲存庫,請使用。

接收端 API

管線有三種 API 用於建立接收端:

你將三種水槽類型都稱為 target、append_flow 或 update_flow。

Limitations

  • Sinks 只在 Python 中提供。 不支援 SQL。
  • 僅支援串流查詢。 不支援批次查詢。
  • 只有 append_flow 和 update_flow 可以寫入接收端。 create_auto_cdc_flow 和其他流型則不支援。
    • 更新流程不支援 Delta Lake 資料表接收端。
  • 接收器不支援管線預期。
  • 執行完整重新整理不會清除先前寫入接收端的資料。

其他資源