【问题标题】:AWS EMR Spark: Error: Cannot load main class from JARAWS EMR Spark:错误:无法从 JAR 加载主类
【发布时间】:2018-07-02 15:07:10
【问题描述】:

我正在尝试使用 AWS 控制台向 AWS EMR 集群提交 Spark 作业。但它失败了:

Cannot load main class from JAR。当我在 AWS EMR 控制台的Arguments 选项中将主类指定为--class 时,作业成功运行-> 添加步骤。

在本地机器上,当没有指定主类时,该作业似乎可以正常工作,如下所示:

 ./spark-submit /home/astro/spark-programs/SpotEMR/MyJob.jar

我已使用运行配置将主类设置为 jar。避免将主类传递为--class 的主要原因是,我必须使用 EMRAcivity 在 AWS Datapipeline 中运行此作业。在 AWS Datapipeline 中,目前无法为正在提交的作业指定主类。

任何帮助将不胜感激。

【问题讨论】:

  • @Frederic:你有什么文件可以证实这件事吗?
  • 请看下面我的回答

标签: apache-spark amazon-emr amazon-data-pipeline


【解决方案1】:

实际上,您可以使用 EMRActivity 和 AWS Datapipeline 传递作业的主类。

https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-emractivity.html 使用step 启动EMRActivity

还有 https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-spark-submit-step.html 使用带有主类的 EMR step 提交 spark 作业。

该步骤如下所示:

command-runner.jar,spark-submit,--class,org.apache.spark.examples.SparkPi

【讨论】:

  • 如果这回答了您的问题,请接受答案。
  • 我确实尝试了您在此处提到的方式。它仍然失败。将检查日志以查找可能的原因
  • 不需要 AMI。适用于当前的 EMR 版本。
  • 当我尝试这个时,它给了我 EmrCluster 仅适用于 hadoop 1 的 AmiVersion 2.4.8 及更高版本,以及适用于 hadoop 2 的 AmiVersion 3.1.1 及更高版本。您使用的是 AmiVersion 2.3.0' 当我尝试在 4.3 版本和 5.11 上运行它,它进入取消状态,没有错误
  • 您是否有任何文档说明在 amazon datapipeline 上运行 emr 作业所需的步骤?
猜你喜欢
  • 1970-01-01
  • 2017-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多