java - 将 Reducer 的输出添加到 Hadoop 中的列表

标签 java hadoop mapreduce

我正在尝试将 reducer 的输出添加到 list 中,然后在读取所有值后访问并打印列表。

这是我正在做的:-

public class Reducer extends Reducer<Text, BooleanWritable, Text, BooleanWritable> {
  public static final Logger LOG = LoggerFactory.getLogger(Reducer.class);
  public List<String> keys= new ArrayList<>(1000);

  public void reduce(Text key, Iterable<BooleanWritable> values, Context context) throws IOException, InterruptedException {
    for (BooleanWritable value : values) {
        keys.add(key.toString());
      context.write(key, value);
    }
    print(keys);
  }

  private void print(String keys) {
    for (String key : keys) {
      LOG.info(key);  
  }
}

但是,它没有按预期工作。 我只想在 reducer 中的所有值都添加到 list

后打印一次列表

最佳答案

您需要使用 which 在每个 reducer 任务中调用一次。 protected 无效清理(org.apache.hadoop.mapreduce.Reducer.Context 上下文) 抛出 IOException、InterruptedException

引用这个documentation .

关于java - 将 Reducer 的输出添加到 Hadoop 中的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39129688/

相关文章:

java - HDFS 文件校验和

java - 迁移到 jre 1.8 时 Spring bean 创建属性不可写异常

java - 导入到Eclipse以使用新API编写MapReduce程序的正确jar文件是什么?

java - 增加 JTextArea 上点指示器的大小

r - R工具是否与apache hadoop兼容

hadoop - 如何在java代码中更改Hadoop映射任务的堆大小?

hadoop - hadoop mapreduce的类路径在哪里?

java - Hadoop Map/Reduce WARN mapred.LocalJobRunner : job_local_0001 java. io.EOFException?

java - 设置 native 库路径

java - 在 Flex 中保持 Java 服务器 session 处于 Activity 状态