Hazelcast内置的CountAggregation真的效率低下吗?



我一直在考虑用Hazelcast分布式映射实现来替换当前执行命令的Oracle数据库。要做到这一点,我需要用等效的Hazelcast替换我们的SQL查询。Hazelcast提供了一些内置的聚合,例如计数。我一直很乐意使用它,但当我开始编写自己的聚合时,我查看了CountAggregation的源代码。它可以在这里找到:http://grepcode.com/file/repo1.maven.org/maven2/com.hazelcast/hazelcast/3.3-RC2/com/hazelcast/mapreduce/aggregation/impl/CountAggregation.java

Hazelcast中的聚合是使用MapReduce算法实现的。但对我来说,上面的消息来源似乎真的很低效。对于算法的Mapper阶段,他们使用SupplierConsumingMapper,它只是使用与提供的键相同的键来发出映射。这意味着减少阶段实际上并没有减少任何东西,因为所有发出的键都是不同的,在最后的排序阶段,你最终会得到一个完整的1,而不是一些部分计数。

当然,他们应该做的是使用一个总是发出相同密钥的映射器?然后组合器和减速器实际上可以进行一些组合和减速。在我看来,上面的源代码错误地使用了MapReduce模型,尽管最终得到的结果是正确的。我误解什么了吗?

嘿,你完全正确。这个地方的实现有点简单:)你能在github上提交一个问题吗?这样我们就不会忘记解决这个问题。感谢Chris

相关内容

  • 没有找到相关文章