You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PySpark将CSV导入MongoDB时遭遇Py4JJavaError错误

解决Spark写入MongoDB时的ClassNotFoundException问题

尝试用PySpark将本地CSV文件导入MongoDB,使用的代码如下:

from pyspark.sql import SparkSession
from pyspark.conf import SparkConf

conf = SparkConf() \
    .setAppName("MongoDB") \
    .setMaster("local[*]") \
    .set("spark.mongodb.input.uri", "mongodb://localhost:27017/Scrub_Data.RPT_AR") \
    .set("spark.mongodb.output.uri", "mongodb://localhost:27017/Scrub_Data.RPT_AR")

spark = SparkSession.builder \
    .config(conf=conf) \
    .getOrCreate()


df = spark.read.csv("mypathtocsvfile", header=True, inferSchema=True)

df.write \
    .format("com.mongodb.spark.sql.DefaultSource") \
    .mode("append") \
    .option("uri", "mongodb://localhost:27017/Scrub_Data.RPT_AR") \
    .save()

运行上述代码时抛出Py4JJavaError,提示调用o39.save时出错,具体为java.lang.ClassNotFoundException:找不到数据源com.mongodb.spark.sql.DefaultSource。


解决方案

  • 添加MongoDB Spark Connector依赖
    这个错误的核心是Spark缺少MongoDB数据源的驱动包,必须引入对应的连接器依赖:
    • 若使用spark-submit运行脚本,在命令中指定依赖包(需匹配你的Spark和Scala版本):
      spark-submit --packages org.mongodb.spark:mongo-spark-connector_2.12:10.2.0 your_script.py
      
      说明:_2.12是Scala版本号,10.2.0是连接器版本,需根据你的Spark版本调整(比如Spark 3.x对应连接器10.x系列)。
    • 若在IDE本地开发,可在SparkSession构建时直接配置依赖:
      spark = SparkSession.builder \
          .config(conf=conf) \
          .config("spark.jars.packages", "org.mongodb.spark:mongo-spark-connector_2.12:10.2.0") \
          .getOrCreate()
      
  • 检查版本兼容性
    确保MongoDB Spark Connector版本与你的Spark、MongoDB服务器版本兼容:
    • Spark 3.0+ 适配连接器10.x及以上版本
    • Spark 2.4.x 适配连接器2.x系列

内容的提问来源于stack exchange,提问作者RajatK350

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 07:32:07