安裝或更新 Apache Beam SDK

本頁說明如何安裝或更新 Apache Beam SDK,以便在 Dataflow 服務上執行管道。

安裝 Apache Beam SDK

Apache Beam SDK 是一種用於資料管道的開放原始碼程式設計模型。您可以使用 Apache Beam 程式來定義這些管道,並選擇 Dataflow 等執行器來執行管道。

Java

Java 適用的 Apache Beam SDK 最新版本為 2.76.0。如要瞭解版本的變更內容,請參閱 版本公告

如要使用 Maven 取得 Java 適用的 Apache Beam SDK,請採用 Maven Central Repository 中已發布的成果。

在 SDK 構件的 pom.xml 檔案中新增依附元件和依附元件管理工具。詳情請參閱「在 Dataflow 中管理管道依附元件」。

如要進一步瞭解 Java 適用的 Apache Beam SDK 依附元件,請參閱 Apache Beam 說明文件中的「Java 適用的 Apache Beam SDK 依附元件」和「在 Java 中管理 Beam 依附元件」。

Python

Python 適用的 Apache Beam SDK 最新版本為 2.76.0。如要瞭解版本的變更內容,請參閱 版本公告

如要取得 Python 適用的 Apache Beam SDK,請使用 Python Package Index 中其中一個已發布的套件。

執行下列指令,安裝 Python Wheel:

pip install wheel

請從虛擬環境執行下列指令,以便安裝最新版本的 Python 適用的 Apache Beam SDK:

pip install 'apache-beam[gcp]'

視連線狀況而定,安裝作業可能需要一段時間。

Go

Go 適用的 Apache Beam SDK 最新版本為 2.76.0。如要瞭解版本的變更內容,請參閱 版本公告

如要安裝最新版本的 Go 適用的 Apache Beam SDK,請執行下列指令:

go get -u github.com/apache/beam/sdks/v2/go/pkg/beam

設定開發環境

如要瞭解如何設定 Google Cloud 專案和開發環境以使用 Dataflow,請參閱下列任一教學課程:

原始碼和範例

Apache Beam 原始碼可在 GitHub 上的 Apache Beam 存放區中找到。

Java

程式碼範例位於 GitHub 上的 Apache Beam Examples 目錄

Python

程式碼範例位於 GitHub 上的 Apache Beam Examples 目錄

Go

程式碼範例位於 GitHub 上的 Apache Beam Examples 目錄

找出 Dataflow SDK 版本

安裝細節會因您的開發環境而異。如果您使用 Maven,您可以在一或多個本機 Maven 存放區中「安裝」多個版本的 Dataflow SDK。

Java

如要瞭解特定管道正在執行的 Dataflow SDK 版本,您可以在使用 DataflowPipelineRunnerBlockingDataflowPipelineRunner 執行時查看主控台的輸出。主控台將包含如下訊息,其中包括 Dataflow SDK 的版本資訊:

Python

如要瞭解特定管道正在執行的 Dataflow SDK 版本,您可以在使用 DataflowRunner 執行時查看主控台的輸出。主控台將包含如下訊息,其中包括 Dataflow SDK 的版本資訊:

Go

如要瞭解特定管道正在執行的 Dataflow SDK 版本,您可以在使用 DataflowRunner 執行時查看主控台的輸出。主控台將包含如下訊息,其中包括 Dataflow SDK 的版本資訊:

  INFO: Executing pipeline on the Dataflow Service, ...
  Dataflow SDK version: <version>

更新 Apache Beam SDK

將管道升級至較新版本的 Apache Beam SDK 時,請更新專案依附元件設定,並檢查版本之間是否有潛在的重大變更。

查看版本資訊和破壞性變更

升級前,請先查看 Apache Beam 版本資訊,瞭解變更、修正錯誤和潛在的破壞性變更。

如果升級時跨越了多個子版本,請查看所有中間版本的版本資訊。舉例來說,如果從 2.50.0 版升級至 2.60.0 版,請參閱 2.51.02.60.0 版的版本資訊。重大變更、淘汰項目和設定更新會累積在各個版本中。

如要查看影響 Dataflow 的已知問題和連接器專屬注意事項,請參閱「SDK 版本支援狀態」表格中的「詳細資料」欄。

更新 SDK 依附元件

如要在專案中升級 SDK 版本,請更新管道所用語言的建構設定或環境。將 VERSION 替換為目標 Apache Beam SDK 版本 (例如 2.76.0)。

Java

如要升級 Java 適用的 Apache Beam SDK,請更新建構設定檔中的 SDK 版本,例如 Maven 的 pom.xml 或 Gradle 的 build.gradle

Maven

pom.xml 檔案中,更新 beam.version 屬性,或更新 Apache Beam 依附元件中的 <version> 標記:

<properties>
  <beam.version>VERSION</beam.version>
</properties>

<dependencies>
  <dependency>
    <groupId>org.apache.beam</groupId>
    <artifactId>beam-sdks-java-core</artifactId>
    <version>${beam.version}</version>
  </dependency>
  <dependency>
    <groupId>org.apache.beam</groupId>
    <artifactId>beam-runners-google-cloud-dataflow-java</artifactId>
    <version>${beam.version}</version>
  </dependency>
</dependencies>

Gradle

build.gradle 檔案中,更新 Apache Beam 依附元件宣告:

dependencies {
  implementation 'org.apache.beam:beam-sdks-java-core:VERSION'
  implementation 'org.apache.beam:beam-runners-google-cloud-dataflow-java:VERSION'
}

詳情請參閱「管理 Java 管道依附元件」。

Python

如要在本機或虛擬環境中升級 Python 適用的 Apache Beam SDK,請使用 pip

pip install --upgrade 'apache-beam[gcp]==VERSION'

requirements.txtsetup.py 檔案中,更新固定的版本:

apache-beam[gcp]==VERSION

Go

如要升級 Go 適用的 Apache Beam SDK,請使用 go get 擷取目標版本,並更新 go.mod 檔案:

go get -u github.com/apache/beam/sdks/v2@vVERSION
go mod tidy

詳情請參閱「管理 Go 管道依附元件」。

部署升級後的管道

在程式碼中更新 SDK 版本後,請根據管道類型選擇部署策略:

  • 串流管道:對於串流管道,您可以透過就地取代工作、執行平行管道,或停止並重新啟動工作,部署升級後的程式碼。如需詳細操作說明、相容性規則和部署策略,請參閱「更新現有管道」和「升級串流管道」。
  • 批次管道:批次管道不支援更新執行中的工作,也不支援就地取代工作。讓現有工作執行完畢,或取消執行中的工作,然後使用升級後的 SDK 版本啟動新工作。

持續整合/持續推送軟體更新和更新部署的最佳做法

在自動建構和部署管道中推出 SDK 升級時,請遵循下列最佳做法,盡量降低營運風險:

  • 固定依附元件:請一律固定使用確切的 SDK 版本,例如 Python 中的 apache-beam[gcp]==VERSION,或是 Maven 和 Gradle 中的確切版本字串。請避免使用動態範圍 (例如 >=latest),以免在自動 CI/CD 建構作業期間,發生未經測試的次要升級。
  • 在測試環境中驗證:在將變更升級至正式環境前,請先在專屬的測試或預先發布環境中,部署及測試升級後的管道。驗證管道輸送量、指標穩定性和下游輸出內容。
  • 使用測試或平行管道:對於重要業務的串流應用程式,請與現有管道平行執行升級後的管道。在排空舊管道前,請先驗證這兩項工作之間的資料一致性,以及輸出內容是否正確。

後續步驟