1

我有一个分片输入集合,我想在将其发送到我的 hadoop 集群以进行 map reduce 计算之前对其进行过滤。

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

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

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

然而这不起作用:

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、连接器版本 (2.2-1.2.0)。

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

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

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

4

1 回答 1

1

调试方法:

在蒙戈:

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"}}}'
于 2014-02-03T09:38:26.213 回答