我正在通过一个MapReduce作业对单词进行排序(按值)。实现此目的的两种方法:
从效率和可伸缩性的 Angular 来看,哪种解决方案更好。
最佳答案
第二个变体不提供全局排序,例如如果您有2个reducer,则结果文件可能是
part-r-00000
word1 1
word2 3
part-r-00001
word3 2
word4 5
即使您按值对每个文件排序,也很难按
word4-word2-word3-word1
降序遍历单词。您可以通过一些技巧来并行阅读。另一方面,单个化简器的性能较慢,因为它必须处理所有数据。同样,您可能没有足够的内存将所有数据保留在reducer JVM堆中。
如果可能,我会选择单个 reducer 。
关于java - 一个reduce与多个reducer具有后处理,用于对单词进行计数和排序。哪一个更有效和可扩展?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42320726/