Dataflow 是一項 Google Cloud 服務,可大規模整合串流與批次資料處理工作。您可以使用 Dataflow 建立資料管道,從一或多個來源讀取資料、轉換資料,以及將資料寫入目的地。
Dataflow 的常見用途包括:
- 資料移動:在子系統之間擷取或複製資料。
- ETL (擷取、轉換及載入) 工作流程,可將資料擷取至 BigQuery 等資料倉儲。
- 支援商業智慧資訊主頁。
- 對串流資料即時套用機器學習。
- 大規模處理感應器資料或記錄檔資料。
Dataflow 在批次和串流分析中使用的程式設計模型相同。串流管道可大幅縮短延遲時間。您可以擷取、處理及分析不斷增減的即時資料量。根據預設,Dataflow 會保證每個記錄都只會「處理一次」。對於可容許重複資料的串流管道,啟用至少一次模式通常可以降低成本並縮短延遲時間。
Dataflow 的優點
本節將說明使用 Dataflow 的一些優點。
受管理
Dataflow 是一項全代管服務。也就是說,Google 會管理執行 Dataflow 所需的所有資源。執行 Dataflow 工作時,Dataflow 服務會分配一組工作站 VM 來執行管道。您不需要佈建或管理這些 VM。工作完成或取消後,Dataflow 會自動刪除 VM。系統會根據工作使用的運算資源向您收費。如要進一步瞭解費用,請參閱 Dataflow 定價。
可擴充
Dataflow 的設計宗旨是支援大規模的批次和串流管道。資料會平行處理,因此工作會分配到多個 VM。
Dataflow 可以透過佈建額外的工作站 VM 自動調度資源,或在工作站需求較少時關閉部分工作站 VM。此外,也會根據管道特性將工作最佳化。舉例來說,Dataflow 可以在 VM 之間動態重新平衡工作,以便更有效率地完成平行工作。
方便攜帶
Dataflow 以開放原始碼的 Apache Beam 專案為基礎。您可以使用特定語言的 SDK,透過 Apache Beam 撰寫管道。Apache Beam 支援 Java、Python 和 Go SDK,以及多語言管道。
Dataflow 會執行 Apache Beam 管道。如果您之後決定在其他平台 (例如 Apache Flink 或 Apache Spark) 上執行管道,無須重新編寫管道程式碼即可完成。
彈性
您可以將 Dataflow 用於相對簡單的管道,例如移動資料。不過,這項服務也適用於更進階的應用程式,例如即時串流分析。隨著您從批次作業轉移至串流作業,或遇到更進階的用途,以 Dataflow 建構的解決方案也能因應您的需求成長。
Dataflow 支援多種管道建立和執行方式,您可以視需求選擇:
使用 Apache Beam SDK 編寫程式碼。
部署 Dataflow 範本。 範本可讓您執行預先定義的管道。舉例來說,開發人員可以建立範本,然後資料科學家就能視需要部署範本。
Google 也提供常見情境的範本程式庫。您不需要瞭解任何 Apache Beam 程式設計概念,即可部署這些範本。
使用 JupyterLab 筆記本,以疊代方式開發及執行管道。
Observable
您可以在 Google Cloud 控制台中,透過 Dataflow 監控介面監控 Dataflow 工作狀態。監控介面會以圖示呈現管道,顯示各個管道階段的進度和執行詳細資料。監控介面可協助您輕鬆找出瓶頸或高延遲等問題。您也可以剖析 Dataflow 工作,監控 CPU 使用率和記憶體分配情形。
運作方式
Dataflow 使用資料管道模型,資料會經過一系列階段。階段可能包括從來源讀取資料、轉換及彙整資料,以及將結果寫入目的地。
管道的處理作業可從簡單到複雜不等。舉例來說,管道可能會執行下列操作:
- 將資料原封不動地移至目的地。
- 轉換資料,讓目標系統更容易使用。
- 匯總、處理及充實資料,以供分析。
- 將資料與其他資料合併。
在 Apache Beam 中定義的管道不會指定管道的執行「方式」。執行管道是執行器的工作。執行器的用途是在特定平台上執行 Apache Beam 管道。Apache Beam 支援多個執行器,包括 Dataflow 執行器。
如要搭配 Apache Beam 管道使用 Dataflow,請指定 Dataflow 執行器。執行器會將可執行的程式碼和依附元件上傳至 Cloud Storage bucket,並建立 Dataflow 工作。接著,Dataflow 會分配 VM 集區來執行管道。
下圖顯示使用 Dataflow 和其他 Google Cloud 服務的典型 ETL 和 BI 解決方案:
下圖顯示下列階段:
- Pub/Sub 會從外部系統擷取資料。
- Dataflow 會從 Pub/Sub 讀取資料,然後將資料寫入 BigQuery。在這個階段,Dataflow 可能會轉換或彙整資料。
- BigQuery 可做為資料倉儲,讓資料分析師對資料執行臨時查詢。
- Looker 會根據儲存在 BigQuery 中的資料,即時提供 BI 洞察資料。
在基本資料遷移情境中,您可能會執行 Google 提供的範本。部分範本支援以 JavaScript 編寫的使用者定義函式 (UDF)。您可以使用 UDF 在範本中加入自訂處理邏輯。如要建立更複雜的管道,請從 Apache Beam SDK 開始。
後續步驟
- 如要進一步瞭解 Apache Beam,請參閱「Apache Beam 的程式設計模型」。
- 請按照工作建構工具快速入門導覽課程或 Dataflow 範本快速入門導覽課程的指示,建立第一個管道。
- 瞭解如何使用 Apache Beam 建構管道。