我使用下面的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()
字符串
我正在使用:
- Spark版本:3.2.4
- Mongo DB版本:6
- Scala版本:2.12.15
- Java 1.8
- Python 3.8
- Ubuntu 20.0.4
- 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)
型
1条答案
按热度按时间lnxxn5zx1#
这可能与scala,pyspark和你使用的mongodb驱动程序之间的版本冲突有关。
你可以检查spark和scala的安装版本,并搜索相应的mongo依赖项。
您也可以尝试卸载所有内容,然后从一开始就选择好的版本重新安装。
如果需要,请查看spark官方文档here以获取安装细节。