Missing collection name. Set via the ‘spark.mongodb.output.uri‘ or ‘spark.mongodb.output.collection‘

本文解决在使用Spark保存数据到MongoDB时遇到的错误:java.lang.IllegalArgumentException:Missing collection name。通过正确配置spark.mongodb.output.uri和spark.mongodb.output.collection属性,以及添加MongoSpark插件依赖,成功解决了数据写入问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在使用spark将数据保存到MongoDB时报错:

java.lang.IllegalArgumentException: Missing collection name. Set via the 'spark.mongodb.output.uri' or 'spark.mongodb.output.collection' property

提示需要设置spark.mongodb.output.uri或者spark.mongodb.output.collection

添加依赖:

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

MongoSpark插件使用的配置是从sparksession中获得的,因此sparksession创建语句需要将conf配置加进来

SparkSession sparkSession = SparkSession.builder()
				.appName("LogAnalyse")
				.master("local")
               	.config("spark.mongodb.output.uri","mongodb://name:passwd@192.168.1.11:27017/database_name.table_name")
                .getOrCreate();
JavaSparkContext jsc = new JavaSparkContext(sparkContext);
Map<String, String> writeOverrides = new HashMap<String, String>();
writeOverrides.put("collection", "table_name");
writeOverrides.put("writeConcern.w", "majority");
WriteConfig defaultWriteConfig = WriteConfig.create(jsc).withOptions(writeOverrides);

//保存
MongoSpark.save(dataFrame.select("pd_id","sqljb"),defaultWriteConfig);

参考文档:
https://docs.mongodb.com/spark-connector/v2.0/java/read-from-mongodb/
https://stackoverflow.com/questions/58153363/missing-database-name-set-via-the-spark-mongodb-output-uri-or-spark-mongodb
https://www.cnblogs.com/feiyumo/p/7346530.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值