我一直在使用这个yaml文件来启动我的数据流flex工作流与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.
谁能建议我需要修复什么?我怀疑我需要使用云sdk而不是python运行.....
亲切的问候马可
当使用Apache Beam 2.30.0或更高版本时,您需要添加--experiment=use_runner_v2
作为参数,正如文档所述。
因此,您的更新后的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数据流管道之前,您可以看看下面的检查表吗?
-
自定义容器支持Dataflow Runner v2
-
新的Dataflow runner, Dataflow runner v2,现在是默认的Python流管道(2.21.0或更高版本),以及滚动Python批处理管道(2.21.0或更高版本)默认为out从2021年2月开始。您不必对您的管线代码以利用这个新体系结构。下在某些情况下,您的管道可能不会使用Runner V2,尽管管道运行在一个受支持的SDK版本上。
-
您必须使用——experiments=use_runner_v2标志运行作业
-
Dataflow Runner v2需要Apache Beam SDK版本2.21.0或Python为更高版本,Java为2.30.0或更高版本。当运行管道时,请确保使用使用相同版本(例如2.XX.0)和语言的Apache Beam SDK版本(例如Python 3.X)作为自定义容器映像上的SDK
-
自定义容器必须运行默认的ENTRYPOINT脚本/opt/apache/beam/boot,该脚本初始化工作环境并启动SDK工作进程。如果你不设置这个入口点,你的worker将挂起并且永远不能正常启动。
注意:Dataflow已经停止支持使用Python2的管道。因此,请确保使用python3作为管道的运行时。