Shell中执行spark-submit提交Python脚本时如何正确传入指定目录参数
Spark-submit提交Python脚本传参解决方案
错误原因梳理
- 第一次执行报错:
./bin/spark-submit路径不存在,你当前的工作目录为/home/sdsid/algorithm,该目录下没有Spark的可执行文件;同时脚本路径多写了前缀./,绝对路径不需要添加当前目录标识。 - 第二次、第三次执行报错:存在两个问题:
- 命令拼写错误,
spark-sumbit少写了字母t,正确写法为spark-submit <是Shell的输入重定向符号,不能用来传递命令行参数,给Python脚本传递sys.argv参数仅需要在脚本文件名后,按照参数顺序用空格分隔即可。
- 命令拼写错误,
正确提交命令示例
提前配置好Spark环境变量后,可直接使用如下命令提交:
nohup spark-submit \ --master yarn \ --deploy-mode cluster \ --driver-memory 16g \ --executor-memory 16g \ --num-executors 5 \ --executor-cores 1 \ /home/sdsid/algorithm/cs_preDeploy.py \ /tmp/sdsid/sample_dataset/ \ /tmp/sdsid/sample_dataset/dataset_4 \ /tmp/sdsid/sample_dataset/dataset_5 \ /tmp/sdsid/sample_dataset/dataset_6 \ /tmp/sdsid/sample_output/dataset_output/ \ 2021 7 &
注意事项
- 若使用Yarn Cluster模式提交任务,需确保所有输入、输出路径为HDFS路径,否则集群节点无法访问本地路径;如果必须使用本地路径,可将部署模式修改为
--deploy-mode client - 若路径包含空格或特殊字符,直接用双引号包裹路径即可,不需要添加其他符号
- 命令末尾的
&作用是将任务放到后台运行,配合nohup使用可以避免终端关闭后任务被终止
内容的提问来源于stack exchange,提问作者Nabih Bawazir
相关产品推荐
相关产品推荐

