我有一个集群启动并运行。我想添加一个步骤来运行我的代码。代码本身在单个实例上正常工作。唯一的问题是,我无法让它解决S3问题。亚马逊emr从S3提交不工作
aws emr add-steps --cluster-id j-XXXXX --steps Type=spark,Name=SomeSparkApp,Args=[--deploy-mode,cluster,--executor-memory,0.5g,s3://<mybucketname>/mypythonfile.py]
这正是我应该做的示例。我究竟做错了什么?
错误,我得到:
Exception in thread "main" java.lang.IllegalArgumentException: Unknown/unsupported param List(--executor-memory, 0.5g, --executor-cores, 2, --primary-py-file, s3://<mybucketname>/mypythonfile.py, --class, org.apache.spark.deploy.PythonRunner)
Usage: org.apache.spark.deploy.yarn.Client [options]
Options:
--jar JAR_PATH Path to your application's JAR file (required in yarn-cluster
mode)
.
.
.
at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:121)
at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
Command exiting with ret '1'
当我指定为这个代替:
aws emr add-steps --cluster-id j-XXXXX --steps Type=spark,Name= SomeSparkApp,Args=[--executor-memory,0.5g,s3://<mybucketname>/mypythonfile.py]
我得到这个错误,而不是:
Error: Only local python files are supported: Parsed arguments:
master yarn-client
deployMode client
executorMemory 0.5g
executorCores 2
编辑:沿时进一步得到我在SSH到集群后手动创建python文件,并指定如下:
aws emr add-steps --cluster-id 'j-XXXXX' --steps Type=spark,Name= SomeSparkApp,Args=[--executor-memory,1g,/home/hadoop/mypythonfile.py]
但是,没有做好这项工作。
任何帮助表示赞赏。这非常令人沮丧,因为AWS自己的博客https://blogs.aws.amazon.com/bigdata/post/Tx578UTQUV7LRP/Submitting-User-Applications-with-spark-submit上有记录的方法无效。
您的EMR群集是否具有适当的IAM权限来访问'S3'? – Kristian
是的,因为我可以在S3中完成引导操作。该部分成功。顺便说一句 - 当我使用GUI时,它工作。现在真的很沮丧。 :) – Gopala
你有没有想过这个DId?我们遇到了同样的问题。如果我使用本地FS的罐子,它可以工作。我通过S3传入并且失败。 – luckytaxi