hadoop - 我可以在不设置mapred.reduce.tasks=1的情况下在mapreduce程序中找到min、max或avg吗

标签 hadoop mapreduce

我试图了解如何使用mapreduce 找到一个非常大的文件的最小值、最大值、平均值。将 reduce task 数设置为 1 是一个显而易见的解决方案,但对于非常大的文件来说并不是最佳选择。我也在考虑编写一个链接 MR 作业,但最终,您最终在最终作业中使用了一个 reducer 。有人可以阐明任何其他方式来做到这一点吗?

谢谢

最佳答案

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

关于hadoop - 我可以在不设置mapred.reduce.tasks=1的情况下在mapreduce程序中找到min、max或avg吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37532214/

相关文章:

amazon-s3 - map-reduce 如何在 HDFS 和 S3 上工作?

hadoop - Hive UDF-适用于所有基本类型的通用UDF

hadoop - 将 Mahout 模型输出导出为 Weka 输入

java - Hadoop 多输出

mongodb - 有没有办法获取mongodb中对象字段的长度?

eclipse - 在Eclipse中以独立模式运行Hadoop mapreduce作业时出错?

shell - hadoop 命令手动运行但在 cron 中不运行

hadoop - Spark:Spark UI无法反射(reflect)正确的执行者数量

java - 当多个map任务在同一个datanote上并行运行时,datanode内存使用的困惑

java - pig : UDF not returning expected resultset