【问题标题】:mongo.input.query with $date not filtering input to hadoop带有 $date 的 mongodb.input.query 不过滤 hadoop 的输入
【发布时间】:2014-01-31 09:17:28
【问题描述】:

我有一个分片输入集合,我想在将其发送到我的 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、this 连接器版本 (2.2-1.2.0)。

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

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

您能指出一些调试工具/方法吗?

【问题讨论】:

  • 这似乎是正确的语法:mongo.input.query='{"_id.day":{"$lt":{"$date":"2013-12-31 23: 00:00.000Z"}}}'

标签: mongodb hadoop mongodb-hadoop


【解决方案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"}}}'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-24
    • 2019-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-12
    • 2020-06-21
    • 1970-01-01
    相关资源
    最近更新 更多