【问题标题】:Cloud Build does not work anymore after upgrading to beam 2.30.0升级到梁 2.30.0 后,Cloud Build 不再工作
【发布时间】:2021-08-07 08:09:34
【问题描述】:

我一直在使用这个 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  

今天我决定将梁升级到 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 运行.....

亲切的问候 马可

【问题讨论】:

    标签: google-cloud-platform google-cloud-dataflow google-cloud-build


    【解决方案1】:

    在使用 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
    

    【讨论】:

    • 太棒了!非常感谢。一定错过了那个标志问候
    【解决方案2】:

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

    • Custom Containers支持Dataflow Runner v2

    • 新的 Dataflow 运行器 Dataflow Runner v2 现在是 Python 流式传输管道(2.21.0 或更高版本)和滚动 Python Batch 管道(版本 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 或更高版本。什么时候 运行你的管道,make sure to launch the pipeline 使用 具有相同版本(例如 2.XX.0)和语言的 Apache Beam SDK 版本(例如 Python 3.X)作为自定义容器映像上的 SDK

    • 自定义容器必须运行默认的 ENTRYPOINT 脚本 /opt/apache/beam/boot,它会初始化工作环境并启动 SDK 工作进程。如果您不set this entrypoint,您的工作人员将挂起并且永远无法正常启动。

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

    【讨论】:

      猜你喜欢
      • 2018-06-18
      • 1970-01-01
      • 2023-03-14
      • 2016-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-16
      相关资源
      最近更新 更多