我正在尝试将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
答案 0 :(得分:2)
您需要使用每个reducer任务调用一次。
protected void cleanup(org.apache.hadoop.mapreduce.Reducer.Context context)
throws IOException,InterruptedException
请参阅此documentation。