Simple Java Map/Reduce Framework [已关闭]
任何人都可以向我指出一个简单的,开源的Map/Reduce框架/Java API吗?似乎没有多少证据表明这样的事情存在,但其他人可能知道不同。
当然,我能找到的最好的是Hadoop MapReduce,但这不符合“简单”的标准。我不需要运行分布式作业的能力,只需要让我在多核机器上,在单个JVM中使用标准的Java5风格并发运行map/reduce风格的作业。
写自己并不难,但我宁愿不必写。
任何人都可以向我指出一个简单的,开源的Map/Reduce框架/Java API吗?似乎没有多少证据表明这样的事情存在,但其他人可能知道不同。
当然,我能找到的最好的是Hadoop MapReduce,但这不符合“简单”的标准。我不需要运行分布式作业的能力,只需要让我在多核机器上,在单个JVM中使用标准的Java5风格并发运行map/reduce风格的作业。
写自己并不难,但我宁愿不必写。
你看过阿卡吗?虽然 akka 实际上是一个基于分布式 Actor 模型的并发框架,但您只需很少的代码即可实现很多东西。将工作分成几部分非常容易,它会自动充分利用多核机器,并能够使用多台机器来处理工作。与使用线程不同,它对我来说感觉更自然。
我有一个使用akka的Java map reduce示例。这不是最简单的地图减少示例,因为它利用了期货;但它应该让你大致了解所涉及的内容。我的 map reduce 示例演示了几件主要的事情:
如果您有任何疑问,StackOverflow实际上有一个很棒的akka QA部分。
我认为值得一提的是,这些问题是Java 8的历史。例如:
int heaviestBlueBlock =
blocks.filter(b -> b.getColor() == BLUE)
.map(Block::getWeight)
.reduce(0, Integer::max);
换句话说:单节点MapReduce在Java 8中可用。
有关更多详细信息,请参阅 Brian Goetz 关于 lambda 项目的演示文稿