使用日期过滤器(mongo.input.query)传递Hadoop作业的输入查询

时间:2013-06-11 11:37:02

标签: mongodb hadoop

我正在使用Hadoop为我的应用程序编写Map Reduce作业。

我发现通过编辑属性mongo.input.query可以在作业执行之前设置查询条件。

但是当我尝试提供以下查询时(为MongoDB添加了ISODate)

  <property>
    <name>mongo.input.query</name>
    <value>{ "created_at": { "$gt": ISODate("2013-06-12") } }</value>
    <value></value>
  </property>

实际上,这个查询在MongoVUE查询控制台中运行时工作正常,但是当使用Hadoop作业运行时,它显示为

java.lang.IllegalArgumentException: Provided JSON String is not representable/parseable as a DBObject.
Caused by: com.mongodb.util.JSONParseException:
{ "created_at": { "$gt": ISODate("2013-06-12") } }

任何建议都有助于解决此问题。

感谢。

1 个答案:

答案 0 :(得分:2)

对于不属于本机JSON的日期和其他数据类型,请使用extended json。 例如:

 {"created_at":{"$gt":{"$date":1182470400000}}}

(使用日期的长表示法。)