使用MongoDB Spark Connector根据时间戳进行过滤

时间:2017-07-04 10:32:04

标签: mongodb mongodb-query apache-spark-sql spark-dataframe mongodb-hadoop

我正在使用Spark MongoDB connector从mongodb获取数据。但是我无法使用Spark使用聚合管道(rdd.withPipeline)来查询Mongo。以下是我想要的代码根据时间戳&获取记录存储在数据帧中:

 val appData=MongoSpark.load(spark.sparkContext,readConfig)
val df=appData.withPipeline(Seq(Document.parse("{ $match: { createdAt : { $gt : 2017-01-01 00:00:00 } } }"))).toDF()

这是使用spark为时间戳值查询mongodb的正确方法吗?

1 个答案:

答案 0 :(得分:0)

如上所述,您可以使用Extended JSON格式作为日期过滤器。

val appDataRDD  = MongoSpark.load(sc)
val filteredRDD = appDataRDD.withPipeline(Seq(Document.parse("{$match:{timestamp:{$gt:{$date:'2017-01-01T00:00:00.000'}}}}")))
filteredRDD.foreach(println)

另请参阅MongoDB Spark Connector: Filters and Aggregation以查看替代过滤器。