bash脚本执行spark-submit命令报错的问题排查咨询
Spark-submit脚本错误修复方案
问题根源
你当前的写法错误地将选项与参数用引号包裹成了单个字符串,比如"--master $ARG_MASTER"。bash执行时会把这个整体作为spark-submit的一个参数,导致spark识别到的是--master yarn这个完整的“未知选项”,而非--master和yarn两个独立的参数,这就是报错的核心原因。
修正后的脚本
将每个选项与对应参数拆分开,仅对可能包含特殊字符/空格的参数部分加引号:
spark-submit \ --master "$ARG_MASTER" \ --name "$ARG_NAME" \ --queue "$ARG_QUEUE" \ --conf "spark.shuffle.service.enabled=$ARG_SERV_ENABLED" \ --conf "spark.dynamicAllocation.enabled=$ARG_DYNAMICALLOCATION_ENABLED"
关键说明
- 选项(如
--master)和参数(如$ARG_MASTER)必须作为独立的参数传递给spark-submit,不能合并成一个字符串。 - 给参数部分加引号(如
"$ARG_NAME")是为了兼容参数包含空格或特殊字符的场景,避免bash解析出错。 --conf的键值对整体加引号是安全写法,防止参数中的特殊字符破坏命令结构。- 修正后的脚本执行后会生成你期望的命令格式:
spark-submit --master yarn --name my-testapp --queue root.dev --conf spark.shuffle.service.enabled=true --conf spark.dynamicAllocation.enabled=true
内容的提问来源于stack exchange,提问作者Amir
相关产品推荐
相关产品推荐

