Apache Beam Python运行报错:缺少必填参数--output-path
Apache Beam运行aaa_users_py.py提示缺失--output-path参数的问题说明
这个是Apache Beam Python脚本开发、运行过程中的高频常见问题,大量开发者在本地、Colab环境跑自定义Beam作业时都碰到过同类报错,和Apache Beam依赖是否安装完成没有关联。
问题产生原因
- 报错本质是Python命令行参数校验不通过:该脚本在自定义PipelineOptions逻辑里,通过argparse注册了名为
--output-path的必填业务参数,这个参数一般用来指定Beam作业计算完成后结果的写入存储位置(支持本地文件路径、云存储路径等),启动脚本时未传入该参数就会触发参数校验逻辑,终端先打印全量可用参数说明,最后抛出必填参数缺失的错误。 - 多数触发场景是开发者刚接触Beam时,只关注了
--runner这类Beam通用内置参数,忽略了脚本自身定义的业务侧必填参数;Colab环境下用%run魔法命令执行脚本时漏传该参数、本地终端直接执行python aaa_users_py.py不带任何业务参数,都会触发这个报错。
解决方法
- 最直接的处理方式是启动脚本时显式传入
--output-path的合法路径值:- 本地环境运行,若要将结果输出到当前目录下的output文件夹,执行命令为:
python aaa_users_py.py --output-path ./output/ - Colab环境运行,若要将结果输出到Colab临时存储的result目录,传参值为
/content/result/即可;如果需要输出到谷歌云存储,直接传入对应GCS路径格式gs://自定义桶名/结果存储目录/。
- 本地环境运行,若要将结果输出到当前目录下的output文件夹,执行命令为:
- 如果调整了脚本业务逻辑,不再需要指定额外输出路径,可以直接修改脚本内的参数注册代码,把
--output-path从必填项改为可选项,同时配置默认路径即可,参考修改逻辑:from apache_beam.options.pipeline_options import PipelineOptions class CustomUserOptions(PipelineOptions): @classmethod def _add_argparse_args(cls, parser): # 原代码为required=True,改为False并增加default默认值 parser.add_argument( '--output-path', required=False, default='./default_output/', help='作业计算结果存储路径' )
内容的提问来源于stack exchange,提问作者Camila Gonzalez Napoles
相关产品推荐
相关产品推荐

