【问题标题】:How to run python spark script with specific jars如何使用特定的 jar 运行 python spark 脚本
【发布时间】:2019-02-08 15:55:14
【问题描述】:

我必须使用 pyspark 在 EMR 实例上运行 python 脚本来查询 dynamoDB。我可以通过在 pyspark 上查询 dynamodb 来做到这一点,这是通过包含以下 command 的 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 外部类路径,但没有效果。

【问题讨论】:

  • 我认为this 是您要找的。​​span>

标签: python-3.x apache-spark pyspark amazon-dynamodb amazon-emr


【解决方案1】:

使用 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多