我有一组需要从我的 Java 程序执行的 mapreduce 作业。现在我正在通过 Java Process 调用执行它们
$MONGO_HOME/bin/mongo host:port/database jsFiles
有没有办法可以在没有 Mongo 的机器上执行这些 mapreduce 任务。mongo Java 驱动程序是否支持这样的功能?
谢谢!
我有一组需要从我的 Java 程序执行的 mapreduce 作业。现在我正在通过 Java Process 调用执行它们
$MONGO_HOME/bin/mongo host:port/database jsFiles
有没有办法可以在没有 Mongo 的机器上执行这些 mapreduce 任务。mongo Java 驱动程序是否支持这样的功能?
谢谢!
MongoDB MapReduce 作业始终在 Mongo 服务器上运行,从不在客户端中运行,任何客户端都可以向服务器发送作业。
@Chris Shain 向您指出了文档(http://api.mongodb.org/java/current/com/mongodb/MapReduceCommand.html),我建议您阅读它们,但也要了解大多数 MapReduce 操作都是关于将存储在数据库中的大量数据减少到更小的结果集。越接近实际存储数据的位置越好,而且大多数人不会直接在服务器上执行命令。为了使 MapReduce 操作有用,Mongo 必须(并且确实!)提供一种从客户端使用它的方法。有关一般策略,请参见此处:http ://www.mongodb.org/display/DOCS/MapReduce
请注意,由于该操作在服务器上运行,您可能会注意到锁定百分比增加。如果这对您来说是个问题,请考虑在从属或辅助 Mongo 实例上运行 MapReduce 作业。
Mongo 的 Java 客户端驱动程序有 MapReduceCommand,记录在这里:http ://api.mongodb.org/java/current/com/mongodb/MapReduceCommand.html