【发布时间】:2016-11-06 13:32:46
【问题描述】:
我有一个集群正在运行。我正在尝试添加一个步骤来运行我的代码。代码本身在单个实例上运行良好。唯一的问题是我无法让它在 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 文件并指定如下时,IT 会走得更远:
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 集群是否具有访问
S3的适当 IAM 权限? -
是的,因为我可以从 S3 执行引导操作。那部分成功了。顺便说一句 - 当我使用 GUI 时,它起作用了。现在真的很沮丧。 :)
-
你有没有想过这个问题?我们遇到了同样的问题。如果我使用本地 FS 的 jar,它可以工作。我通过 S3 传入一个,但失败了。
-
我做了...我希望我有我使用的确切命令。不幸的是,我现在无法访问它们。我相信我是这样提交的:
Args=["spark-submit",s3://blah-blah/blah.py,......].
标签: amazon-web-services apache-spark amazon-s3 pyspark amazon-emr