gpt4 book ai didi

java - Hadoop MongoConfigUtil查询限制

转载 作者:行者123 更新时间:2023-12-02 21:26:48 28 4
gpt4 key购买 nike

我正在使用Java MongoDB Connector对MongoDB运行Hadoop Mapreduce作业。

我正在使用MongoConfigUtil设置输入和输出URI

MongoConfigUtil.setInputURI( conf, "mongodb://host/db.collection" ); 
MongoConfigUtil.setOutputURI( conf, "mongodb://host/db.collectionOut" );

并且Job正确地获取了指定集合中的所有文档。
有没有一种方法 限制获取的文档的数量?

我希望实现此查询(Mongo风格):
db.collection.find().limit(1000)

我知道 MongoConfigUtil具有 SetQuery方法,但是如何设置限制查询?有什么提示吗?

我试图添加
MongoConfigUtil.setLimit(conf, 1000)

但是我仍然可以收集到所有文件。

最佳答案

setSplitSize 8 MB是默认大小,并且此属性的优先级高于setLimit(mongo.input.limit)。

Example mongoConfig.setSplitSize(5); // MB - 8 MB Deafault

在上面的示例中,我将该值设置为5 MB。
如果为每个Mapper.setLimit提取的每个块的规定的限制大小(例如1000),则意味着每个块(拆分)查询限制的限制。

我认为您想限制整个MapReduce流程的查询。
SetQuery是find()内部的查询,必须以JSON格式(如MongoDB)表示。据我所知,您不能限制mongo query(find())内部。
您可以根据情况找到另一种过滤查询的方法,例如{fieldName:{$ lt:20}}。此外,您还可以根据投影的限制创建一个单独的集合,然后在其中应用MapReduce。

最后,使用SetQuery筛选集合。

关于java - Hadoop MongoConfigUtil查询限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35675367/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com