获取emr-ddb-hadoop.jar以将DynamoDB与EMR Spark连接

时间:2016-05-05 21:04:35

标签: hadoop amazon-web-services apache-spark amazon-dynamodb

我有一个DynamoDB表,我需要连接到EMR Spark SQL才能在表上运行查询。我得到了带有发行标签emr-4.6.0和Spark 1.6.1的EMR Spark Cluster。

我指的是文件:Analyse DynamoDB Data with Spark

连接到主节点后,我运行命令:

spark-shell --jars /usr/share/aws/emr/ddb/lib/emr-ddb-hadoop.jar

它发出警告:

Warning: Local jar /usr/share/aws/emr/ddb/lib/emr-ddb-hadoop.jar does not exist, skipping.

稍后,当我使用

导入DynamoDB输入格式时

import org.apache.hadoop.dynamodb.read.DynamoDBInputFormat import org.apache.hadoop.dynamodb.write.DynamoDBOutputFormat

它给出错误:

 error: object dynamodb is not a member of package org.apache.hadoop
     import org.apache.hadoop.dynamodb.read.DynamoDBInputFormat
 error: object dynamodb is not a member of package org.apache.hadoop
     import org.apache.hadoop.dynamodb.write.DynamoDBOutputFormat

我认为这是导致此错误的jar。我从哪里得到这个emr-ddb-hadoop.jar?

3 个答案:

答案 0 :(得分:2)

不要在spark-default.cnf中使用spark-shell --jars配置:

spark.driver.extraClassPath  /usr/share/aws/emr/ddb/lib/emr-ddb-hadoop.jar
spark.executor.extraClassPath /usr/share/aws/emr/ddb/lib/emr-ddb-hadoop.jar

稍后,导入DynamoDB输入格式正常

import org.apache.hadoop.dynamodb.read.DynamoDBInputFormat
import org.apache.hadoop.dynamodb.write.DynamoDBOutputFormat

答案 1 :(得分:2)

此问题的根本原因是emr-ddb-hadoop.jar在环境(或指定的位置)中不可用。在oder中安装dynamo DB库时,您必须在创建spark EMR集群时选择Hadoop 2.7.2以及您感兴趣的应用程序。你选择了吗?

如果没有启动新群集,请转到高级选项并确保选中Hadoop 2.7.2以及其他应用程序。

答案 2 :(得分:0)

在EMR发布时确实不存在/usr/share/aws/emr/ddb/lib/emr-ddb-hadoop.jar。您应该首先安装必要的bigtop包:

sudo yum install -y /var/aws/emr/packages/bigtop/emr-ddb/noarch/emr-ddb-hadoop-3.0.0-1.amzn1.noarch.rpm

注意,可能存在另一个软件包版本 - 检查/var/aws/emr/packages/bigtop/emr-ddb/noarch/目录的内容。