mongodb-spark-connector出现问题:java.lang.NoClassDefFoundError

时间:2019-04-11 07:28:42

标签: mongodb apache-spark jupyter-notebook

我正在尝试在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)

0 个答案:

没有答案