【问题标题】:IllegalAccessError when running spark job in EMR在 EMR 中运行 spark 作业时出现 IllegalAccessError
【发布时间】:2017-08-31 10:59:02
【问题描述】:

我正在尝试运行访问 dynamodb 的 spark 作业,并且旧的实例化 dynamoDb 客户端的方法已被弃用,现在建议使用客户端构建器。

嗯,这在本地工作得很好,但是当我部署到 EMR 时,我收到了这个错误:

线程“主”java.lang.IllegalAccessError 中的异常:尝试从 com.amazonaws.services.dynamodbv2.AmazonDynamoDBAsyncClientBuilder 类访问 com.amazonaws.services.dynamodbv2.AmazonDynamoDBClientConfigurationFactory 类

导致此问题的代码是:

val dynamoDbClient = AmazonDynamoDBAsyncClientBuilder
  .standard()
  .withRegion(Regions.US_EAST_1)
  .build()

我的 build.sbt 包含:

libraryDependencies += "com.amazonaws" % "aws-java-sdk" % "1.11.114"

我的 spark-submit 命令如下所示:

spark-submit --conf spark.eventLog.enabled=false --packages com.typesafe.play:play-json_2.11:2.5.9,com.github.traviscrawford:spark-dynamodb:0.0.6,com .amazonaws:aws-java-sdk:1.11.114 --master yarn --deploy-mode cluster --class Main application.jar

有人有什么想法吗?我忽略了一些基本的东西吗?

更新

我注意到 EMR 运行的是 OpenJDK 1.8,而我的本地系统运行的是 Oracle Java 1.8。我更改了 EMR 集群以匹配我正在运行的 java,但仍然没有任何变化。

【问题讨论】:

    标签: scala amazon-web-services apache-spark amazon-emr elastic-map-reduce


    【解决方案1】:

    我在这里没有完美的答案,但我正在努力解决在 EMR 上运行的 fat jar build Spark Driver 的类似问题。所以我放弃了我最近的旅行。

    1. 尝试使用选项-v 运行spark-submit 并查看有关类路径等的日志。正如我所见,EMR 也在加载 aws-java-sdk。我不清楚运行的是哪个版本的 aws-java-sdk EMR? EMR 版本 4.7.0 声明“已将适用于 Java 的 AWS 开发工具包升级到 1.10.75”(http://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-whatsnew.html)。
    2. 然后添加另一个参数--conf spark.driver.userClassPathFirst=true 加载驱动程序指定的 aws-java-sdk 版本。

    不幸的是,最后一步引发了纱线错误,例如:Unable to load YARN support ...(对此进行了一些讨论:https://community.cloudera.com/t5/Advanced-Analytics-Apache-Spark/spark-submit-fails-after-setting-userClassPathFirst-to-true/td-p/46778

    来自 aws-java-sdk github repos 的一些讨论:https://github.com/aws/aws-sdk-java/issues/1094

    结论:暂时使用aws-java-sdk 1.10.75版本的api

    【讨论】:

    • 有趣,我会试一试并报告。至于“无法加载 YARN 支持...”必须尝试在客户端模式下运行才能查看它是否有效?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-08
    • 1970-01-01
    • 1970-01-01
    • 2019-06-06
    • 1970-01-01
    • 1970-01-01
    • 2018-10-19
    相关资源
    最近更新 更多