我正在尝试在Apache Sparksession中获得jupyter笔记本(pyspark)和mongodb之间的连接。出现以下错误,我不知道如何解决。
import findspark
findspark.init()
from pyspark.sql import SparkSession
my_spark = SparkSession \
.builder \
.appName("myApp") \
.config("spark.mongodb.input.uri", "mongodb://127.0.0.1/db.coll") \
.config("spark.mongodb.output.uri", "mongodb://127.0.0.1/db.coll") \
.config("spark.jars.packages", "org.mongodb.spark:mongo-spark-connector_2.12-2.4.0") \
.getOrCreate()
df = my_spark.read.format("com.mongodb.spark.sql.DefaultSource").load()
Py4JJavaError:调用o86.load时发生错误。 : java.lang.NoClassDefFoundError:无法初始化类 com.mongodb.spark.config.ReadConfig $位于 com.mongodb.spark.sql.DefaultSource.constructRelation(DefaultSource.scala:91) 在 com.mongodb.spark.sql.DefaultSource.createRelation(DefaultSource.scala:50) 在 org.apache.spark.sql.execution.datasources.DataSource.resolveRelation(DataSource.scala:318) 在 org.apache.spark.sql.DataFrameReader.loadV1Source(DataFrameReader.scala:223) 在 org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:211) 在 org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:167) 在 java.base / jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(本机 方法) java.base / jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 java.base / jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在java.base / java.lang.reflect.Method.invoke(Method.java:566)在 py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)在 py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:357)在 py4j.Gateway.invoke(Gateway.java:282)在 py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132) 在py4j.commands.CallCommand.execute(CallCommand.java:79)处 py4j.GatewayConnection.run(GatewayConnection.java:238)在 java.base / java.lang.Thread.run(Thread.java:834)