我正尝试通过AWS CLI将存储区名称和文件夹名称传递给python脚本,如下所示:
aws emr add-steps --cluster-id j-12XXXXXXXXX2R --steps Type=spark,Name=step0_do_something,Args=[--deploy-mode,cluster,--conf,spark.yarn.appExecutorEnv.PYTHON_EGG_CACHE=/tmp,spark.yarn.appMasterEnv.PYTHON_EGG_CACHE=/tmp,spark.executorEnv.PYTHON_EGG_CACHE=/tmp,spark.yarn.submit.waitAppCompletion=true,spark.master=yarn,--py-files,s3://com.some.bucketname/scripts/my_modules.egg,s3://com.some.bucketname/scripts/my_steps/step0_do_something.py com.another.bucketname an_input_filename.csv somefoldername/somesubfoldername],actionOnFailure=CANCEL_AND_WAIT
我的方法是通过以下方式在脚本(step0_do_something.py)中捕获3个字符串(“ com.another.bucketname”,“ an_input_filename.csv”和“ somefoldername / somesubfoldername”):
if __name__ == '__main__':
session = start_spark_session()
print(sys.argv[0])
print(sys.argv[1])
print(sys.argv[2])
但是,我得到的只是以下错误消息:
Error parsing parameter '--steps': Expected: ',',received: 'EOF' for input:
Type=spark,s3://com.some.bucketname/scripts/my_steps/step0_do_something.py
^
也许值得一提的是,上面的aws emr add-steps命令没有最后是三个参数(“ com.another.bucketname”,“ an_input_filename.csv”和“ somefoldername / somesubfoldername” )是我一直在将该步骤提交到aws emr群集而没有任何问题的方法(但必须使用硬编码的存储桶和文件夹名称)。因此,以这种方式添加一些参数的尝试失败绝对是导致错误的原因。我只是无法在aws文档页面或其他地方找到有关如何实现此目的的任何描述。 任何帮助将不胜感激!