Как использовать pyspark для чтения таблицы с помощью emr-динамодб-коннектора - PullRequest
0 голосов
/ 30 января 2019

Я хочу использовать pyspark с emr-динамодб-коннектором , чтобы прочитать всю таблицу динамодаба в rdd или, предпочтительно, в фрейм данных.Мой код выглядит следующим образом.

dynamodb.py:

from pyspark import SparkContext
from pyspark.sql import SparkSession

sc = SparkContext.getOrCreate()
spark = SparkSession(sc)

conf = {
    "dynamodb.servicename": "dynamodb",
    "dynamodb.input.tableName": "user_state_test",
    "dynamodb.output.tableName": "user_state_test",
    "dynamodb.endpoint": "https://dynamodb.us-west-2.amazonaws.com",
    "dynamodb.regionid": "us-west-2",
    "mapred.output.format.class": "org.apache.hadoop.dynamodb.write.DynamoDBOutputFormat",
    "mapred.input.format.class": "org.apache.hadoop.dynamodb.read.DynamoDBInputFormat"
}

dynamoRDD = sc.hadoopRDD(
    inputFormatClass="org.apache.hadoop.dynamodb.read.DynamoDBInputFormat",
    keyClass="org.apache.hadoop.io.Text",
    valueClass="org.apache.hadoop.dynamodb.DynamoDBItemWritable",
    conf=conf
)

count = dynamoRDD.count()
print(count)

Для поставки разъема emr я собрал его, используя инструмент сборки maven в соответствии с инструкциями awslabs :

  1. Клон репо
  2. mvn clean install.
  3. В результате сборки в целевой директории в директории репозитория emr-dynamodb-hadoop появляется новый jar-файл, называемый emr-dynamodb-hadoop-4.8.0-SNAPSHOT.jar.Я скопировал этот jar-файл в репозиторий, в котором находится мой код, и переименовал его в emr-dynamodb-hadoop.jar.

Я отправляю свое искровое задание с помощью следующей команды:

spark-submit --master "local[4]" --jars /Users/vaerk/dev/myproject/emr-dynamodb-hadoop.jar dynamodb.py

Этот код приводит к следующему исключению: java.lang.ClassNotFoundException: com.amazonaws.services.dynamodbv2.model.AttributeValue

Мои вопросы:

  • Содержится ли класс AttributeValue в emr-dynamodb-hadoop.jar?Ответы на на этот вопрос указывают на то, что должно быть.
  • Правильно ли моя искра отправляет эту банку в путь к классам?
  • и, конечно, что мне нужносделать, чтобы заставить это работать?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...