2016-05-05 46 views
3

我有一個DynamoDB表,我需要連接到EMR Spark SQL才能在表上運行查詢。我得到了帶有發行標籤emr-4.6.0和Spark 1.6.1的EMR Spark Cluster。獲取emr-ddb-hadoop.jar以將DynamoDB與EMR Spark連接

我指的文檔: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輸入格式

它給人的錯誤:

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 

我認爲這是導致此錯誤的罐子。我在哪裏可以得到這個emr-ddb-hadoop.jar?

回答

2

不使用火花外殼--jars,配置在火花default.cnf:

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輸入格式是OK

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

如果有人想知道,通常所說的配置文件的位置是/etc/spark/conf/spark-defaults.conf –

2

的根本原因此問題是emr-ddb-hadoop.jar在環境(或指定的位置)中不可用。在安裝發電機數據庫庫時,您必須在創建火花EMR羣集時選擇Hadoop 2.7.2以及您感興趣的應用程序。你選擇了那個嗎?

如果不啓動新羣集,請轉至高級選項並確保Hadoop 2.7.2與其他應用程序一起選擇。

0

確實/usr/share/aws/emr/ddb/lib/emr-ddb-hadoop.jar在EMR啓動時不會存在。你應該先安裝必要的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/目錄的內容。