【发布时间】: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