Dataflow 範本

您可以使用 Dataflow 範本封裝 Dataflow 管道來用於部署。具備適當權限的使用者即可使用範本部署封裝的管道。 您可以建立自己的自訂 Dataflow 範本,Google 也提供常見情境適用的預建範本

優點

相較於直接將管道部署至 Dataflow,範本有下列優點:

  • 範本會將管道設計與部署作業分開。舉例來說,開發人員可以建立範本,資料科學家則可在稍後部署範本。
  • 範本可以包含參數,讓您在部署範本時自訂管道。
  • 您可以使用 Google Cloud 控制台、Google Cloud CLI 或 REST API 呼叫來部署範本。您不需要開發環境,也不必在本機安裝任何管道依附元件。
  • 範本是程式碼構件,可儲存在原始碼控管存放區,並用於持續整合 (CI/CD) 管道。

Google 提供的範本

Google 提供多種預建的開放原始碼 Dataflow 範本,可用於常見情境。如要進一步瞭解可用的範本,請參閱「Google 提供的範本」。

比較 Flex 範本和傳統範本

Dataflow 支援兩種範本:較新的 Flex 範本和傳統範本。如果您要建立新的 Dataflow 範本,建議建立 Flex 範本。

使用彈性範本時,管道會封裝為 Artifact Registry 中的 Docker 映像檔,以及 Cloud Storage 中的範本規格檔案。範本規格包含 Docker 映像檔的指標。執行範本時,Dataflow 服務會啟動啟動器 VM、提取 Docker 映像檔,並執行管道。執行圖表是根據使用者提供的執行階段參數動態建構而成。如要使用 API 啟動採用 Flex 範本的工作,請使用 projects.locations.flexTemplates.launch 方法。

傳統範本包含 Dataflow 工作圖的 JSON 序列化。管道的程式碼必須將所有執行階段參數包裝在 ValueProvider 介面中。使用者可透過這個介面,在部署範本時指定參數值。如要使用 API 處理傳統範本,請參閱 projects.locations.templates API 參考說明文件。

相較於傳統範本,Flex 範本具有下列優勢:

  • 與傳統範本不同,Flex 範本不需要輸入參數的 ValueProvider 介面。並非所有 Dataflow 來源和接收器都支援 ValueProvider
  • 傳統範本具有靜態工作圖,但彈性範本可以動態建構工作圖。舉例來說,範本可能會根據輸入參數選取不同的 I/O 連接器。
  • 在管道建構期間,Flex 範本可以在虛擬機器 (VM) 上執行前處理作業。例如,驗證輸入參數值。

範本工作流程

使用 Dataflow 範本時,大致需要完成下列步驟:

  1. 開發人員設定開發環境並開發管道。此環境包含 Apache Beam SDK 和其他依附元件。
  2. 視範本類型 (Flex 或傳統) 而定:
    • 如果是彈性範本,開發人員會將管道封裝至 Docker 映像檔,將映像檔推送至 Artifact Registry,然後將範本規格檔案上傳至 Cloud Storage。
    • 如果是傳統範本,開發人員會執行管道、建立範本檔案,並將範本暫存至 Cloud Storage。
  3. 其他使用者向 Dataflow 服務提交要求,執行範本。
  4. Dataflow 會根據範本建立管道。管道最多可能需要五到七分鐘才會開始執行。

設定 IAM 權限

Dataflow 工作 (包括從範本執行的工作) 會使用兩個 IAM 服務帳戶:

  • Dataflow 服務會使用 Dataflow 服務帳戶來操作 Google Cloud 資源,例如建立 VM。
  • Dataflow 工作站 VM 會使用工作站服務帳戶存取管道的檔案和其他資源。這個服務帳戶需要存取管道工作參照的任何資源,包括範本使用的來源和接收器。詳情請參閱「存取 Google Cloud 資源」。

請確認這兩個服務帳戶具備適當的角色。詳情請參閱「Dataflow 安全性與權限」。

Apache Beam SDK 版本要求

如要自行建立自訂範本,請確認 Apache Beam SDK 版本支援範本建立作業。

Java

如要使用 Java 適用的 Apache Beam SDK 2.x 建立範本,您必須具有 2.0.0-beta3 或更新版本。

Python

如要使用 Python 適用的 Apache Beam SDK 2.x 建立範本,您必須具有 2.0.0 以上版本。

如要使用 Google Cloud CLI 執行範本,您必須具備 Google Cloud CLI 138.0.0 以上版本。

擴充範本

您可以擴充開放原始碼的 Dataflow 範本,建構自己的範本。舉例來說,如果範本使用固定時間區間長度,系統可能會捨棄在時間區間外抵達的資料。如要避免這種情況,請使用範本程式碼做為基礎,並修改程式碼來叫用 .withAllowedLateness 作業。

後續步驟