尝试通过AWS CLI将S3存储桶名称和文件夹路径作为命令行参数传递给EMR上的python脚本

我正尝试通过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文档页面或其他地方找到有关如何实现此目的的任何描述。 任何帮助将不胜感激!

cgwsb 回答:尝试通过AWS CLI将S3存储桶名称和文件夹路径作为命令行参数传递给EMR上的python脚本

通过仅用逗号替换脚本名称和3个字符串之间的空格,可以完成以下工作:

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
本文链接:https://www.f2er.com/3027537.html

大家都在问