首页 > 解决方案 > 将 pyspark 数据帧保存到 mongodb 会出错

问题描述

我尝试使用 google cloud dataproc 集群将 pyspark 数据帧保存到 mongodb,但它一直向我显示一条错误消息。我正在使用 spark2.4.7和 python3.7以及 mongoDB spark 连接器2.4.3 这是我的代码:

spark = SparkSession.builder\
                    .master("yarn")\
                    .appName("demo")\
                    .config("spark.mongodb.input.uri",
                             "mongodb+srv://my_host:27017/people_db") \
                    .config("spark.mongodb.output.uri",
                            "mongodb+srv://my_host:27017/people_db") \
                    .config('spark.jars.packages',
                            'org.mongodb.spark:mongo-spark-connector_2.12-2.4.3')\
                    .getOrCreate()
df = spark.read\
          .format('csv')\
          .options(header=True)\
          .load(csv_path)

# ----------Some data processing -----------

df.write\    #This is the block of code that shows the error
  .format("com.mongodb.spark.sql.DefaultSource")\
  .mode("append")\
  .option("collection", "people")\
  .save()

这是错误消息:

在此处输入图像描述

标签: pythonpython-3.xmongodbapache-sparkgoogle-cloud-dataproc

解决方案


mongo 驱动程序 jar 不包含在类路径中。两个 mongo jars(连接器和驱动程序)在 spark/jars 路径中是必不可少的。通过参考下面的链接,我能够在本地运行,也可以作为 dataproc 作业运行。Mongo 连接器:2.12_3.0.1 Mongo java 驱动程序:3.12 Spark:3.0.2

需要 Mongo 依赖项


推荐阅读