我可以在map reduce程序中找到min、max或avg而不设置mapred.reduce.tasks=1吗

hlswsv35  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(322)

我试图理解如何使用mapreduce找到一个非常大的文件的最小值,最大值,平均值。将reduce tasks的数量设置为1是一个明显的解决方案,但对于非常大的文件来说,这并不是最佳的。我还打算写一个链先生的工作,但最终,你最终使用一个减速机在最后的工作。有人能给我们一些启示吗,其他的方法。
谢谢

mwecs4sa

mwecs4sa1#

我不认为在这里使用1减速机有任何问题,不管您的输入数据集有多大。为此,您应该使用组合器功能,它将返回它们的本地最大值、本地最小值、本地总和和计数,并传递给单个减速机。这样,到reducer的数据量非常少(与Map器的数量成正比)。一旦这些小数据到达单个减速机,您就可以找到全局最大值和最小值,并将求平均值的总和除以总计数。

mwg9r5ms

mwg9r5ms2#

您需要编写逻辑来计算reducer类中的min、max或avg。此外,我相信找出一个非常大的文件的最小值,最大值,平均值将生成一个单独的输出文件。

相关问题