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

使用MongoDB Spark Connector读取数据时遇showString调用错误求助

问题描述

我使用以下Python代码通过Spark从MongoDB读取数据并转换为DataFrame:

from pyspark.sql import SparkSession

# Initialize a Spark session
spark = SparkSession.builder \
    .appName("MongoDB Spark Connector Example") \
    .config("spark.mongodb.read.connection.uri", "mongodb://localhost:23017/") \
    .config("spark.mongodb.read.database", "db_name") \
    .config("spark.mongodb.read.collection", "coll_name") \
    .config("spark.sql.debug.maxToStringFields", 1000) \
    .getOrCreate()
df = spark.read.format("mongodb").load()
df.createOrReplaceTempView("temp")
sqlDf = spark.sql("SELECT id from temp")
sqlDf.show()

我的环境版本信息:

  • Spark版本:3.2.4
  • MongoDB版本:6
  • Scala版本:2.12.15
  • Java版本:1.8
  • Python版本:3.8
  • Ubuntu版本:20.04
  • mongo-spark-connector_2.12版本:10.2.0

运行代码使用的命令:

spark-submit  --packages org.mongodb.spark:mongo-spark-connector_2.12:10.2.0 test.py

运行时出现以下错误:

py4j.protocol.Py4JJavaError: An error occurred while calling o67.showString.
: java.lang.NoSuchMethodError: org.apache.spark.sql.types.StructType.toAttributes()Lscala/collection/immutable/Seq;
    at com.mongodb.spark.sql.connector.schema.InternalRowToRowFunction.<init>(InternalRowToRowFunction.java:46)
    at com.mongodb.spark.sql.connector.schema.RowToBsonDocumentConverter.<init>(RowToBsonDocumentConverter.java:84)
    at com.mongodb.spark.sql.connector.read.MongoScanBuilder.<clinit>(MongoScanBuilder.java:72)
    at com.mongodb.spark.sql.connector.MongoTable.newScanBuilder(MongoTable.java:121)
解决方案

该错误源于MongoDB Spark Connector版本与Spark版本不兼容:StructType.toAttributes()方法是Spark 3.3及以上版本新增的API,而你使用的Spark 3.2.4不包含此方法,Connector 10.2.0依赖Spark 3.3+,调用该API时就会抛出“方法不存在”的错误。

修复步骤:

  1. 替换为与Spark 3.2.x匹配的Connector版本:使用mongo-spark-connector_2.12:10.1.1,该版本兼容Spark 3.2系列。
  2. 修改运行命令中的包依赖:
spark-submit --packages org.mongodb.spark:mongo-spark-connector_2.12:10.1.1 test.py
  1. 代码无需修改,保持原有SparkSession配置即可。

执行上述修改后,代码可正常读取MongoDB数据并执行SQL查询。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 04:52:32