如何在DataFlow上使用自定义版本的Apache Beam Python SDK
DataFlow自定义Apache Beam SDK相关问题解答
功能可用性
目前DataFlow指定自定义Apache Beam SDK的功能仍可正常使用,属于官方长期支持的能力,未做下线调整。
打包要求
- 支持格式:优先使用
tar.gz格式的源码归档包,也支持whl格式的二进制包,tar.gz兼容性更强,更推荐使用。 - 归档内容:需要包含完整的SDK构建产物,包括
apache_beam目录、对应版本的apache_beam-<版本号>.dist-info目录,以及setup.py、依赖声明文件等顶层配置文件,不要仅打包apache_beam下的单独文件,否则会出现依赖解析、类加载异常。
建议直接在修改后的Apache Beam源码根目录执行
python setup.py sdist命令,自动生成的tar.gz包完全符合格式要求,无需手动整理文件。
配置参数要求
仅设置sdk-location参数不足以保证正常运行,需要同时完成以下配置:
- 在PipelineOptions中填写完整的SDK归档文件路径,格式为
sdk_location="gs://<bucket名称>/<路径前缀>/<自定义sdk文件名>.tar.gz",不要仅填写bucket根目录 - 确保
runner参数设置为DataflowRunner - 建议同步配置
requirements_file参数,在对应依赖声明文件中加入你升级后的google-cloud-spanner版本约束,避免运行时平台自动拉取默认版本覆盖你的修改
额外注意事项
你本地提交作业所用的Beam版本,必须和自定义SDK的版本完全一致,否则会出现序列化不兼容的运行报错。
内容的提问来源于stack exchange,提问作者Laura
相关产品推荐
相关产品推荐

