HDFS に書き込むのではなく、通常のファイル (.csv または .log ファイルなど) に Reducer の結果を書き込みたいと考えています。そこで、レデューサー クラスで次のコードを使用します。
@Override
public void reduce(Text key, Iterable<LongWritable> values, Context context) throws IOException, InterruptedException {
// Standard algorithm for finding the max value
long sum = 0;
for (LongWritable value : values) {
sum++;
}
context.write(key, new LongWritable(sum));
System.out.println(key + " : " + sum);
Main.map.put(key.toString(), sum);
}
そして、マップのコンテンツを Main クラスの csv ファイルに出力します。ただし、レデューサーが終了した後、ファイルは空です。レデューサークラスではマップに何も配置されず、コンソールのレデューサーに System.out.println(key + ":" + sum) が表示されないため、マップが空であることがわかりました。
それはどうしてですか?それらはレデューサークラスで処理されませんか?