Как запустить скрипт Python Spark с конкретными банками - PullRequest
0 голосов
/ 08 февраля 2019

Мне нужно запустить скрипт python на экземпляре EMR, используя pyspark для запроса DynamoDB.Я могу сделать это, запросив DynamodB на Pyspark, который выполняется путем включения JAR с помощью следующей команды .

`pyspark --jars /usr/share/aws/emr/ddb/lib/emr-ddb-hive.jar,/usr/share/aws/emr/ddb/lib/emr-ddb-hadoop.jar`

Я запустил следующий скрипт Python3 для запроса данных с помощью модуля Python Pyspark.

import time
from pyspark import SparkContext, SparkConf
from pyspark.sql import SparkSession, HiveContext

start_time = time.time()
SparkContext.setSystemProperty("hive.metastore.uris", "thrift://nn1:9083")
sparkSession = (SparkSession
                .builder
                .appName('example-pyspark-read-and-write-from-hive')
                .enableHiveSupport()
                .getOrCreate())
df_load = sparkSession.sql("SELECT * FROM example")
df_load.show()
print(time.time() - start_time)

Что вызвало следующее исключение во время выполнения для отсутствующих jar.

java.lang.ClassNotFoundException Class org.apache.hadoop.hive.dynamodb.DynamoDBSerDe not found

Как преобразовать pyspark --jars.. в питонический эквивалент.

На данный момент я пыталсякопирование jar-файлов из местоположения /usr/share/... в $SPARK_HOME/libs/jars и добавление этого пути к внешнему пути класса spark-defaults.conf, который не имел никакого эффекта.

1 Ответ

0 голосов
/ 11 февраля 2019

Используйте команду spark-submit для выполнения вашего скрипта Python.Пример:

spark-submit --jars /usr/share/aws/emr/ddb/lib/emr-ddb-hive.jar,/usr/share/aws/emr/ddb/lib/emr-ddb-hadoop.jar script.py
...