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

Shw*_*eta 5 hadoop amazon-web-services amazon-dynamodb apache-spark

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

我指的是文档:Analyze DynamoDB Data with Spark

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

spark-shell --jars /usr/share/aws/emr/ddb/lib/emr-ddb-hadoop.jar
Run Code Online (Sandbox Code Playgroud)

它发出警告:

Warning: Local jar /usr/share/aws/emr/ddb/lib/emr-ddb-hadoop.jar does not exist, skipping.
Run Code Online (Sandbox Code Playgroud)

后来,当我使用

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
Run Code Online (Sandbox Code Playgroud)

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

小智 3

不要使用spark-shell --jars,spark-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
Run Code Online (Sandbox Code Playgroud)

稍后导入DynamoDB输入格式就OK了

import org.apache.hadoop.dynamodb.read.DynamoDBInputFormat
import org.apache.hadoop.dynamodb.write.DynamoDBOutputFormat
Run Code Online (Sandbox Code Playgroud)