我必须使用 pyspark 在 EMR 实例上运行 python 脚本来查询 dynamoDB。我可以通过在 pyspark 上查询 dynamodb 来做到这一点,这是通过包含带有以下命令的 jars 来执行的。
`pyspark --jars /usr/share/aws/emr/ddb/lib/emr-ddb-hive.jar,/usr/share/aws/emr/ddb/lib/emr-ddb-hadoop.jar`
我运行以下 python3 脚本来使用 pyspark python 模块查询数据。
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..为 pythonic 等效项。
截至目前,我尝试将 jar 从该位置复制/usr/share/...到$SPARK_HOME/libs/jars并将该路径添加到 spark-defaults.conf 外部类路径,但没有效果。