Dataproc Serverless PySpark脚本无法传递参数求助
Dataproc PySpark批处理传参失败解决方法
问题根源
- 原命令中
--subnet xxx行末尾缺失反斜杠,导致后续的--args argument="xyz"未被识别为gcloud dataproc batches submit pyspark命令的一部分,参数根本没传递到PySpark脚本,因此sys.argv[1]取不到值。 - 若使用键值对传参,原格式不符合Dataproc的
--args传递规则,需要调整写法。
修正后的命令
方式一:直接传递参数值(适配脚本sys.argv[1]的写法)
gcloud dataproc batches submit pyspark gs://path/script.py \ --project xxx \ --region xxx \ --batch xxx \ --version 2.1 \ --deps-bucket='xxx' \ --staging-bucket='xxx' \ --service-account xxx \ --subnet xxx \ --args "xyz"
方式二:传递键值对(需脚本配合解析)
如果脚本需要通过键名接收参数,命令中需给参数添加--前缀,同时脚本改用argparse解析:
命令
gcloud dataproc batches submit pyspark gs://path/script.py \ --project xxx \ --region xxx \ --batch xxx \ --version 2.1 \ --deps-bucket='xxx' \ --staging-bucket='xxx' \ --service-account xxx \ --subnet xxx \ --args --argument="xyz"
对应脚本代码
import argparse parser = argparse.ArgumentParser() parser.add_argument('--argument') args = parser.parse_args() param = args.argument
验证方法
在脚本开头添加打印语句,确认参数是否成功传递:
import sys print("Received arguments:", sys.argv) param = sys.argv[1]
执行后查看日志,若sys.argv列表包含传入的参数,说明传递成功。
内容的提问来源于stack exchange,提问作者AnumNuma
相关产品推荐
相关产品推荐

