升级到 Beam 2.30.0 后,Cloud Build 不再工作

Cloud Build does not work anymore after upgrading to beam 2.30.0

我一直在使用这个 yaml 文件来启动我的 dataflow flex workflow with beam 2.27.0,它一直运行良好

- name: gcr.io/$PROJECT_ID/$_IMAGE
  entrypoint: python
  args:
  - /dataflow/template/main.py
  - --runner=DataflowRunner
  - --project=$PROJECT_ID
  - --region=$_REGION
  - --job_name=$_JOB_NAME
  - --temp_location=$_TEMP_LOCATION
  - --sdk_container_image=gcr.io/$PROJECT_ID/$_IMAGE
  - --disk_size_gb=50
  - --year=2018 
  - --quarter=QTR1 
  - --fmpkey=$_FMPKEY
  - --setup_file=/dataflow/template/setup.py  

今天我决定将 Beam 升级到 2.30.0,当 运行我得到的是完全相同的文件时 这个

Unrecognized SDK container image: gcr.io/datascience-projects/pipeline:latestRun. Custom container images are only supportedfor Dataflow Runner v2.

谁能告诉我需要修复什么?我怀疑我需要 运行 使用 cloud-sdk 而不是 python.....

亲切的问候 马可

当使用 Apache Beam 2.30.0 或更高版本时,您需要添加 --experiment=use_runner_v2 作为参数,因为文档是 covering

因此,您更新后的 yaml 将如下所示:

- name: gcr.io/$PROJECT_ID/$_IMAGE
  entrypoint: python
  args:
  - /dataflow/template/main.py
  - --runner=DataflowRunner
  - --project=$PROJECT_ID
  - --region=$_REGION
  - --job_name=$_JOB_NAME
  - --temp_location=$_TEMP_LOCATION
  - --sdk_container_image=gcr.io/$PROJECT_ID/$_IMAGE
  - --disk_size_gb=50
  - --year=2018 
  - --quarter=QTR1 
  - --fmpkey=$_FMPKEY
  - --setup_file=/dataflow/template/setup.py
  - --experiment=use_runner_v2

在开始使用云构建部署和启动 python 数据流管道之前,您能否先看一下下面的清单。

  • Custom Containers support Dataflow Runner v2

  • 新的 Dataflow 运行ner,Dataflow Runner v2,现在是 Python 流式管道(2.21.0 或更高版本)和滚动 Python 批处理管道(版本 2.21.0 或更高版本)默认输出 从 2021 年 2 月开始。您无需对您的 流水线代码以利用这种新架构。在下面 在某些情况下,您的管道可能不使用 Runner V2, 虽然管道 运行s 在受支持的 SDK 版本上。

  • 你必须 运行 带有 --experiments=use_runner_v2 标志的作业

  • Dataflow Runner v2 需要 Apache Beam SDK 版本 2.21.0 或 Python 的版本更高,Java 的版本为 2.30.0 或更高版本。什么时候 运行宁你的管道,make sure to launch the pipeline使用 具有相同版本(例如 2.XX.0)和语言的 Apache Beam SDK 版本(例如 Python 3.X)作为自定义容器映像上的 SDK

  • 自定义容器必须运行默认入口点脚本/opt/apache/beam/boot,它初始化工作环境并启动 SDK 工作进程。如果你不这样做 set this entrypoint,你的 worker 将挂起并且永远不会正常启动。

注意:Dataflow 已停止支持使用 Python2 的管道。因此,请确保您使用 python3 作为管道的 运行时间。