我有一个分片输入集合,我希望在将其发送到我的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成功消息。
我的语法不正确或我错过了什么?
你能指点我一些调试工具/方法吗?
答案 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"}}}'