大家。一点帮助会很好,我感谢你。我正在尝试保存包含日期时间字段的文档。通过MongoSpark.save()方法使用mongodbspark连接器,这可能是一个挑战:
我从一个返回BsonDocument文档的库中获取要更新的文档。 Datetime字段被视为BsonDateTime字段,所以我需要在保存/更新之前进行一些转换'因为从BsonDocument获取相应的json字符串,生成$ date非有效存储的东西。
为了获得BsonDocument,我只是从另一个开发人员构建的库中调用了一个方法:
val bdoc = handlePermanentProduct(p_id, operationsByProduct)
然后我使用我写的方法转换org.bson.Document中的org.bson.BsonDocument:
val doc: Document = convert(bdoc)
然后,获取数据帧的常用代码&保存/更新我的文件
val docs = sc.parallelize(Seq(doc.toJson))
val df = sparkSession.read.json(rdd)
MongoSpark.save(df.write.option("collection", "products").option("replaceDocument", "false").mode(SaveMode.Append))
再次感谢,并提前
我正在使用Scala 2.11.8,Spark 2.11和Mongodb Spark连接v2.1
答案 0 :(得分:1)
最终,我尝试用于保存/更新的方式不是正确的方法。我发现,当我想使用 MongoSpark.save(...) 方法保存/更新时,阅读文档时,有一个类型匹配过程: datetime字段可以创建为 java.sql.Timestamp ,因此驱动程序可以进行正确的转换。一旦我发现它,这真的很容易。所以,它已经解决了。