Dataflow 是一項 Google Cloud 服務,可提供大規模的整合式串流和批次資料處理服務。您可以使用 Dataflow 建立資料管道,從一或多個來源讀取資料、轉換資料,以及將資料寫入目的地。
Dataflow 的常見用途包括:
- 資料移動:跨子系統擷取或複製資料。
- ETL (擷取、轉換、載入) 工作流程,可將資料擷取至 BigQuery 等資料倉儲。
- 商業智慧 (BI) 資訊主頁的後端支援
- 即時機器學習 (ML) 分析串流資料。
- 大規模處理感應器資料或記錄檔資料。
Dataflow 對於批次和串流分析使用相同的程式設計模型。串流管道可實現低延遲。您可以擷取、處理及分析不斷增減的即時資料量。根據預設,Dataflow 會對每筆記錄提供「只處理一次」的處理方式。對於可接受重複資料的串流管道,您可以啟用至少一次模式,藉此降低費用並縮短延遲時間。
使用 Dataflow 處理資料的優點
本節將說明使用 Dataflow 的一些優點。
代管資料處理
Dataflow 是一項全代管服務。也就是說,Google 會管理執行 Dataflow 所需的所有資源。執行 Dataflow 工作時,Dataflow 服務會分配一組工作站 VM 來執行管道。您不需要佈建或管理這些 VM。工作完成或取消後,Dataflow 會自動刪除 VM。系統會根據工作使用的運算資源向您收費。如要進一步瞭解費用,請參閱 Dataflow 定價。
可擴充的資料管道
Dataflow 的設計宗旨是支援大規模的批次和串流管道。資料會平行處理,因此工作會分配給多個 VM。
Dataflow 可以透過佈建額外的工作站 VM 來自動調度資源,或在工作站 VM 需求減少時關閉部分工作站 VM。此外,也會根據管道的特性,將工作最佳化。舉例來說,Dataflow 可以在 VM 之間動態重新平衡工作,讓平行工作更有效率地完成。
可搭配 Apache Beam 使用
Dataflow 以開放原始碼的 Apache Beam 專案為基礎。您可以使用特定語言的 SDK,透過 Apache Beam 編寫管道。Apache Beam 支援 Java、Python 和 Go SDK,以及多語言管道。
Dataflow 會執行 Apache Beam 管道。如果您之後決定在其他平台 (例如 Apache Flink 或 Apache Spark) 上執行管道,無須重新編寫管道程式碼即可完成。
彈性的資料管道開發方式
您可以將 Dataflow 用於使用案例簡單的管道,例如只移動資料。不過,Dataflow 也適用於更進階的應用程式,例如即時串流分析。隨著您從批次處理轉移到串流處理,或是遇到更進階的用途,以 Dataflow 建構的解決方案也能因應您的需求成長。
Dataflow 支援多種管道建立和執行方式,您可以視需求選擇:
使用 Apache Beam SDK 編寫程式碼。
部署 Dataflow 範本。 範本可讓您執行預先定義的管道。舉例來說,開發人員可以建立範本,然後資料科學家就能視需要部署範本。
Google 也提供範本庫,適用於常見情境。您不需要瞭解任何 Apache Beam 程式設計概念,即可部署這些範本。
使用 JupyterLab 筆記本以疊代方式開發及執行管道。
可觀察的資料管道工作
您可以在 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 建構管道。