我有一个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?
答案 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/
目录的内容。