HDFS에 쓰는 대신 감속기 결과를 일반 파일 (예 : .csv 또는 .log 파일)에 쓰고 싶습니다. 그래서 감속기 클래스에 다음 코드를 사용Hadoop에서 일반 파일로 출력 출력
@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);
}
그리고 메인 클래스의 csv 파일로지도의 내용을 인쇄 할 수 있습니다. 그러나 감속기를 마친 후에는 파일이 비어 있습니다. 감속기 클래스에서지도에 아무것도 넣지 않았기 때문에지도가 비어있는 것을 알았습니다. 또한 콘솔의 감속기에서 System.out.println (key + ":"+ sum)을 볼 수 없습니다.
어떻게 될 수 있습니까? 감속기 등급으로 가공되지 않았습니까?
정확하게이 작업을 수행하려고합니까? – climbage
예 : 단어 수, hadoop jar word count.jar 입력 출력을 실행합니다. 출력을 HDFS에 쓰는 것을 제외하고 result.log와 같은 로그 파일에 결과를 쓰고 싶습니다.이 result.log는 정확히 같은 것입니다. 출력 파일을 HDFS – user2552010