我有一個集羣啓動並運行。我想添加一個步驟來運行我的代碼。代碼本身在單個實例上正常工作。唯一的問題是,我無法讓它解決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