java - MongoDB Spark 连接器 : mongo-spark cannot connect to DB

标签 java mongodb apache-spark

我正在尝试使用 MongoDB 的 Spark 连接器从 MongoDB 读取数据。我在启动应用程序时向 Spark conf 对象提供了数据库和集合详细信息。然后使用下面这段代码来读取。

// create configuration
SparkSession spark = SparkSession.builder()
  .master("local")
  .appName("MongoSparkConnectorIntro")
  .config("spark.mongodb.input.uri", "mongodb://localhost:27017/Employee.zipcodes")
  .config("spark.mongodb.output.uri", "mongodb://localhost:27017/Employee.test")
  .getOrCreate(); 
// Create a JavaSparkContext using the SparkSession's SparkContext object
JavaSparkContext jsc = new JavaSparkContext(spark.sparkContext());

/*Start Example: Read data from MongoDB************************/

JavaMongoRDD<Document> rdd = MongoSpark.load(jsc);

/*End Example**************************************************/

// Analyze data from MongoDB
System.out.println(rdd.count());
System.out.println(rdd.first().toJson());

但这无法连接本地主机数据库。这显示以下错误。

Exception in thread "main" java.lang.NoSuchMethodError: com.mongodb.spark.config.ReadConfig$.apply(Lorg/apache/spark/SparkConf;Lscala/collection/Map;)Ljava/lang/Object;
 at com.mongodb.spark.MongoSpark$Builder.build(MongoSpark.scala:259)
 at com.mongodb.spark.MongoSpark$.load(MongoSpark.scala:375)
 at com.mongodb.spark.MongoSpark.load(MongoSpark.scala)
 at com.mycompany.app.App2.main(App2.java:35)

我正在使用以下 Maven 依赖项。

<dependency>
  <groupId>org.apache.spark</groupId>
  <artifactId>spark-core_2.11</artifactId>
  <version>2.1.0</version>      
</dependency>
<dependency>
    <groupId>org.mongodb.spark</groupId>
    <artifactId>mongo-spark-connector_2.11</artifactId>
    <version>1.1.0</version>
</dependency>
<dependency>
    <groupId>org.mongodb</groupId>
    <artifactId>bson</artifactId>
    <version>3.2.2</version>
</dependency>   
<dependency>
    <groupId>org.scala-lang</groupId>
    <artifactId>scala-library</artifactId>
    <version>2.11.7</version>
</dependency>
<dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-client</artifactId>
    <version>2.2.0</version>
</dependency>

最佳答案

您可以尝试将 mongo Spark 连接器版本提高到最新版本

<dependency>
    <groupId>org.mongodb.spark</groupId>
    <artifactId>mongo-spark-connector_2.11</artifactId>
    <version>2.2.1</version>
</dependency>

关于java - MongoDB Spark 连接器 : mongo-spark cannot connect to DB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43523774/

相关文章:

java - 为计时器创建 ActionListener

javascript - Node.js、mongoose 和 MongoDb - 替换多个文档中特定字符串中的字符

pandas - 将字符串转换为标识正确年份的准确日期

python - PySpark - 从值列表中添加列

Java多态性如何为子类对象调用父类(super class)方法

java - 当另一个线程正在更新数据库时,如何阻止查询线程?

java - AuthenticationProvider authenticate 在 IE 中调用两次,登录失败

python - 如何通过计算所有元素并按一个请求进行分组来进行 pymongo 聚合

mongodb - 哪种 NoSQL 数据库可用于处理大量数据

pandas - 如何使用Hadoop维护其架构每季度更改一次的历史数据