hadoop Mongodb Spark Connector调用o67.showString时出错

bnlyeluc  于 7个月前  发布在  Hadoop
关注(0)|答案(1)|浏览(91)

我使用下面的Python代码从Spark中的“MongoDB”中阅读数据并将其转换为DataFrame:
从pyspark.sql导入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()

字符串
我正在使用:

  1. Spark版本:3.2.4
  2. Mongo DB版本:6
  3. Scala版本:2.12.15
  4. Java 1.8
  5. Python 3.8
  6. Ubuntu 20.0.4
  7. 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)

lnxxn5zx

lnxxn5zx1#

这可能与scala,pyspark和你使用的mongodb驱动程序之间的版本冲突有关。
你可以检查spark和scala的安装版本,并搜索相应的mongo依赖项。
您也可以尝试卸载所有内容,然后从一开始就选择好的版本重新安装。
如果需要,请查看spark官方文档here以获取安装细节。

相关问题