hadoop - 在 reducer 函数中选择 max key

标签 hadoop mapreduce

<分区>

我对reducer的理解是,它从sort和shuffle的中间o/p文件中处理一对键值对。我不知道如何访问具有排序和混洗键值对的中间文件。一旦无法访问中间文件,就无法在reducer模块中编写代码来选择最大的key。我不知道如何对一次接收一对 K、V 的 reducer 进行编程,以仅将最大的键及其对应的值打印到最终输出文件。

假设这是来自映射器的中间文件,它也经过了排序和混洗..

1个

2 是

4 这是什么

我希望 reducer 在最终输出文件中只打印“4 this what”。由于 reducer 的内存中没有整个文件。不可能在reducer中写这个逻辑。我想知道是否有任何 API 支持从中间文件中选择最后一行,该行最终将具有最大键(键将默认排序)

我是否必须覆盖默认排序比较器才能实现我想要实现的目标???

最佳答案

您可以在作业中设置不同的排序比较器:

job.setSortComparatorClass(LongWritable.DecreasingComparator.class);

例如,这将按 LongWritable 键递减排序。

关于hadoop - 在 reducer 函数中选择 max key,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31347566/

相关文章:

hadoop - 如何在Hadoop-3.2.0中删除ERROR start-dfs.sh

Hadoop:将文件本地目录复制到 Hdfs 时出错

java - 借助log4j输出hadoop程序的变量

java - Mongo-Hadoop 简单测试因 NPE 而失败

javascript - Mongodb 和 MapReduce - 结果丢失

hadoop - 步骤因 exitCode、Amazon Emr Hadoop、S3DistCp 而失败

hadoop - 错误:找不到或加载主类org.apache.hadoop.hdfs.server.datanode.DataNode

sql - 尝试执行非事务性更新表时出现 Hive 错误

java - Namenode 恶魔启动时挂断

hadoop - 是否存在无法通过 map/reduce 解决的典型问题?