使用MongoDB后端的Spark流媒体

使用MongoDB后端的Spark流媒体,mongodb,apache-spark,streaming,Mongodb,Apache Spark,Streaming,我需要读取csv文件,这些文件将从遥测设备传输到云上的某个位置,并将相关数据存储到Mongodb存储中。我使用Spark Streaming来读取新文件(它们每分钟到达一次,有时甚至更频繁),并使用MomgoDB Spark connector。问题是数据没有加载到MomgoDB中。我在代码中添加了Dataframe的show()步骤,这些步骤正确地显示在控制台上,这意味着流应用程序正在按预期读取和处理文件。但保存到MongoDB的最后一步并没有发生。我的代码如下所示 reqdata.forea

我需要读取csv文件,这些文件将从遥测设备传输到云上的某个位置,并将相关数据存储到Mongodb存储中。我使用Spark Streaming来读取新文件(它们每分钟到达一次,有时甚至更频繁),并使用MomgoDB Spark connector。问题是数据没有加载到MomgoDB中。我在代码中添加了Dataframe的show()步骤,这些步骤正确地显示在控制台上,这意味着流应用程序正在按预期读取和处理文件。但保存到MongoDB的最后一步并没有发生。我的代码如下所示

reqdata.foreachRDD { edata =>
    import sqlContext.implicits._
    val loaddata = edata.map(w => EnergyData(w(0).toString,w(1).toString,w(2).toString)).toDF()
    loaddata.show()
    loaddata.printSchema(); 
    MongoSpark.save(loaddata.write.option("uri","mongodb://127.0.0.1:27017/storedata.energydata").mode("overwrite"))
}

ssc.start()
loaddata.show()
函数可以很好地显示数据

我检查了Mongodb日志,发现很少有像这样奇怪的行

“2016-09-07T08:12:30.109-0700 I网络[initandlisten]连接已从127.0.0.1:55694#212接受(3个连接现已打开) 2016-09-07T08:12:30.111-0700 I命令[conn212]CMD:drop storedata.energydata“

现在,我不明白为什么Mongo会放弃收藏。
非常感谢您的帮助

我通过将保存模式更改为
追加
,自己解决了这个问题:

MongoSpark.save(loaddata.write.option("uri","mongodb://127.0.0.1:27017/storedata.energydata").mode("append"))

我自己解决了这个问题,将保存模式更改为
append

MongoSpark.save(loaddata.write.option("uri","mongodb://127.0.0.1:27017/storedata.energydata").mode("append"))
我不明白为什么Mongo会删除集合-
.mode(“覆盖”)
我不明白Mongo为什么会删除集合-
.mode(“覆盖”)