mongodb - Spark Scala 将数据帧写入 MongoDB
问题描述
我正在尝试使用此作为指南将转换后的数据框写入 MongoDB
https://docs.mongodb.com/spark-connector/master/scala/streaming/
到目前为止,我从 MongoDB 读取数据帧的工作非常顺利。如下所示。
val mongoURI = "mongodb://000.000.000.000:27017"
val Conf = makeMongoURI(mongoURI,"blog","articles")
val readConfigintegra: ReadConfig = ReadConfig(Map("uri" -> Conf))
val sparkSess = SparkSession.builder()
.master("local")
.appName("MongoSparkConnectorIntro")
.config("spark.mongodb.output.uri", "mongodb://000.000.000.000:27017/blog.vectors")
.getOrCreate()
// Uses the ReadConfig
val df3 = sparkSess.sqlContext.loadFromMongoDB(ReadConfig(Map("uri" -> "mongodb://000.000.000.000:27017/blog.articles")))
然而,将这个数据框写入 MongoDB 似乎更加困难。
//reads data from mongo and does some transformations
val data = read_mongo()
data.show(20,false)
data.write.mode("append").mongo()
对于最后一行,我收到以下错误。
Exception in thread "main" java.lang.IllegalArgumentException: Missing database name. Set via the 'spark.mongodb.output.uri' or 'spark.mongodb.output.database' property
当我在上面的代码块中的 spark Session 中设置它时,这似乎让我感到困惑。
val sparkSess = SparkSession.builder()
.master("local")
.appName("MongoSparkConnectorIntro")
.config("spark.mongodb.output.uri", "mongodb://000.000.000.000:27017/blog.vectors")
.getOrCreate()
你能发现我做错了什么吗?
解决方案
我的答案与我阅读它的方式非常相似,但使用 writeConfig 代替。
data.saveToMongoDB(WriteConfig(Map("uri" -> "mongodb://000.000.000.000:27017/blog.vectors")))
推荐阅读
- amazon-web-services - 无法连接到服务器:拨号 tcp:lookup api.xxxx.xx on 172.20.0.1:53: no such host
- python - 在 python 中编程磁场
- amazon-web-services - 是否可以制作混合 K8S 集群 AWS / Raspberry PI
- javascript - 尝试学习 React 钩子但不明白为什么此复选框行为被破坏?
- mysql - Laravel orderBy减慢响应
- python - Python 谷歌地图 API
- javascript - 与父级大小相同的 div 元素
- php - 在具有现有主键的表中添加自动递增 id
- angular - 带有 API 数据的饼图中的 Angular Highcharts 系列名称
- excel - 在工作表中搜索单元格值,然后将相邻单元格复制到变量范围中