You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

离线Google Cloud环境下Dataflow部署Apache Beam SDK报错求助

解决Google Cloud Dataflow离线环境下SDK部署失败的问题

问题根源

你当前指定的--sdk_location是自定义项目的依赖集合包,但Dataflow要求该参数指向包含完整wheel文件的Apache Beam SDK离线包,而非自定义的项目依赖包,这就是Worker日志报错找不到Beam SDK wheel的原因。


解决方案

1. 生成符合要求的Beam SDK离线包

在有网络的环境中,下载对应版本的Beam SDK及全部依赖的wheel文件并打包:

# 下载Beam SDK(包含GCP依赖)及所有依赖的wheel
pip download apache-beam[gcp]==2.43.0 --dest ./beam-sdk-packages
# 将所有wheel打包成tar.gz
tar -czf beam-sdk-2.43.0.tar.gz -C ./beam-sdk-packages .

2. 上传离线包到Dataflow可访问的存储

将生成的tar.gz上传到Worker能访问的GCS存储桶:

gsutil cp beam-sdk-2.43.0.tar.gz gs://your-bucket/beam-offline/

3. 启动作业时指定正确的SDK路径

修改启动命令,指向GCS上的Beam SDK离线包,同时补充必要的Dataflow参数:

python wordcount.py \
  --runner DataflowRunner \
  --project your-project-id \
  --region your-region \
  --no_use_public_ip \
  --sdk_location "gs://your-bucket/beam-offline/beam-sdk-2.43.0.tar.gz"

自定义项目依赖的处理

如果你的wordcount.py需要用到自定义的package-import依赖,需单独打包成wheel并通过--extra_package传递:

# 打包自定义项目为wheel格式
python setup.py bdist_wheel
# 上传到GCS
gsutil cp dist/package-import-0.0.2-py3-none-any.whl gs://your-bucket/extra-packages/
# 启动命令添加额外依赖参数
python wordcount.py \
  --runner DataflowRunner \
  --project your-project-id \
  --region your-region \
  --no_use_public_ip \
  --sdk_location "gs://your-bucket/beam-offline/beam-sdk-2.43.0.tar.gz" \
  --extra_package "gs://your-bucket/extra-packages/package-import-0.0.2-py3-none-any.whl"

关键注意事项

  • 所有离线包的版本必须与本地开发环境完全一致,避免版本冲突。
  • 确保Dataflow Worker服务账号拥有目标GCS存储桶的读取权限。
  • 不要将自定义依赖混入Beam SDK包中,两者需通过不同参数分别传递。

内容的提问来源于stack exchange,提问作者luca

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 12:02:44