mongo.input.query,$ date不过滤输入到hadoop

时间:2014-01-31 09:17:29

标签: mongodb hadoop mongodb-hadoop

我有一个分片输入集合,我希望在将其发送到我的hadoop集群之前进行过滤以进行地图缩减计算。

我的$ hadoop jar中有这个参数 - 命令

mongo.input.query='{_id.uuid:"device-964693"}'

它有效。输出不会映射任何不满足此查询的数据。

然而,这不起作用:

mongo.input.query='{_id.day:{\\$lt:{\\$date:1388620740000}}}'

没有数据作为输出产生。

1388620740000表示日期:2014年1月1日23:59:00 GMT + 0000(GMT)。 该设置使用hadoop 2.2,mongo 2.4.9,this连接器版本(2.2-1.2.0)。

没有错误消息,只是标准的hadoop成功消息。

我的语法不正确或我错过了什么?

你能指点我一些调试工具/方法吗?

1 个答案:

答案 0 :(得分:1)

调试方法:

在mongo中:

db.currentOp(true).inprog.forEach(
   function(d){
     if(d.ns == "test.collection" && d.query.query["_id.day"] )
        printjson(d);
     })

终端友好语法:

$ hadoop jar... ...mongo.input.query='{"_id.day":{"$lt":{"$date":"2014-01-19T23:00:00Z"}}}'