我试图理解如何使用mapreduce找到一个非常大的文件的最小值,最大值,平均值。将reduce tasks的数量设置为1是一个明显的解决方案,但对于非常大的文件来说,这并不是最佳的。我还打算写一个链先生的工作,但最终,你最终使用一个减速机在最后的工作。有人能给我们一些启示吗,其他的方法。谢谢
mwecs4sa1#
我不认为在这里使用1减速机有任何问题,不管您的输入数据集有多大。为此,您应该使用组合器功能,它将返回它们的本地最大值、本地最小值、本地总和和计数,并传递给单个减速机。这样,到reducer的数据量非常少(与Map器的数量成正比)。一旦这些小数据到达单个减速机,您就可以找到全局最大值和最小值,并将求平均值的总和除以总计数。
mwg9r5ms2#
您需要编写逻辑来计算reducer类中的min、max或avg。此外,我相信找出一个非常大的文件的最小值,最大值,平均值将生成一个单独的输出文件。
2条答案
按热度按时间mwecs4sa1#
我不认为在这里使用1减速机有任何问题,不管您的输入数据集有多大。为此,您应该使用组合器功能,它将返回它们的本地最大值、本地最小值、本地总和和计数,并传递给单个减速机。这样,到reducer的数据量非常少(与Map器的数量成正比)。一旦这些小数据到达单个减速机,您就可以找到全局最大值和最小值,并将求平均值的总和除以总计数。
mwg9r5ms2#
您需要编写逻辑来计算reducer类中的min、max或avg。此外,我相信找出一个非常大的文件的最小值,最大值,平均值将生成一个单独的输出文件。