我正在尝试使用aws cli在EMR上运行一个火花作业。
我想要的是让服务器启动,运行作业并终止。
我能够分两步完成(首先启动服务器,然后运行作业),但是当我发送一个命令时,我收到错误。
错误:
Error: Cannot load main class from JAR file:/home/hadoop/spark/bin/spark-submit
Run with --help for usage help or --verbose for debug output
Command exiting with ret '1'
所以它看起来无法找到jar(或主类)。我已将master设置为yarn-cluster,以便它应该在s3上查找jar,并且我100%确定主类的类路径是正确的。
命令
aws emr create-cluster --name "Test auto run" --release-label emr-5.4.0 \
--applications Name=Spark --ec2-attributes KeyName=key-emr --instance-type m3.xlarge --instance-count 2 \
--log-uri s3://test/emr --steps Type=Spark,Name="Spark Program",ActionOnFailure=CONTINUE,,\
Args=[/home/hadoop/spark/bin/spark-submit,--verbose,--master,yarn-cluster,--class,co.path.test.TestJob,s3://test/test-0.0.1-SNAPSHOT-jar-with-dependencies.jar,\
's3://test/test-messages/1998*','d','s3://test/loaded'] \
--use-default-roles --auto-terminate
控制器说正在执行:
/usr/lib/hadoop/bin/hadoop jar /var/lib/aws/emr/step-runner/hadoop-jars/command-runner.jar spark-submit
/home/hadoop/spark/bin/spark-submit --verbose --master yarn-cluster --class,co.path.test.TestJob s3://test/test-0.0.1-SNAPSHOT-jar-with-dependencies.jar s3://test/test-messages/1998* d s3://test/loaded
任何想法我搞砸了什么?
答案 0 :(得分:0)
如果您在步骤API 上提到的EMR步骤类型 Spark - 步骤Type = Spark ,正如您在Step的控制器日志中所标识的那样, EMR将添加spark-submit
命令,您无需将/home/hadoop/spark/bin/spark-submit
作为STEP API的参数传递。
错误是由于两个spark-submit,它将第二个/ home / hadoop / spark / bin / spark-submit作为参数。
请参阅:http://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-spark-submit-step.html