簡體   English   中英

使用 MongoDB Spark Connector 根據時間戳進行過濾

[英]Using MongoDB Spark Connector to filter based on timestamp

我正在使用Spark MongoDB 連接器從 mongodb 獲取數據。但是我無法獲得如何使用聚合管道(rdd.withPipeline)在 Mongo 上使用 Spark 進行查詢。以下是我想要根據時間戳獲取記錄的代碼& 存儲在 dataframe:

 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 的正確方法嗎?

如評論所述,您可以將擴展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連接器:過濾器和聚合以查看替代過濾器。

嘗試這個:

val pipeline = "{'$match': {'CreationDate':{$gt: {$date:'2020-08-26T00:00:00.000Z'}}}}"

val sourceDF = spark.read.format("com.mongodb.spark.sql.DefaultSource").option("uri", "mongodb://administrator:password@10.XXXXX:27017/?authSource=admin").option("database","_poc").option("collection", "activity").option("pipeline", pipeline).load()

試試這個(但它有像 mongo date 這樣的限制,ISODate 只能采用 TZ 格式的時間戳。

option("pipeline", s"""[{ $$match: { "updatedAt" : { $$gte : new ISODate("2022-11-29T15:26:21.556Z") } } }]""").mongo[DeltaComments]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM