2016-06-21 2 views
1

드라이버 클래스, 매퍼 클래스 및 감속기 클래스가 있습니다. 지도 작업이 잘 실행됩니다. 그러나 원하는 것이 나오지 않습니다. 감속기에 System.out.println 문을 넣었습니다. 나는 매퍼와 감속기의 기록을 보았다. mapper에 넣은 System.out.println 문은 로그에서 볼 수 있지만 감속기의 println 문은 로그에 표시되지 않습니다. 감속기가 전혀 출시되지 않았을 가능성이 있습니까?우연히 감속기 클래스를 시작할 수 없습니까? 감속기 로그에 Sytem.out.println 문을 볼 수 없습니다.

이것은 감속기의 로그입니다.

Reducer Log file

+0

필자가 작성한 다른 mapreduce 프로그램을 확인했습니다. 감속기에서 작성한 System.out.Println 문은 로그에 표시됩니다. 그러나이 프로그램을위한 것이 아닙니다. 어떤 제안을 해주시겠습니까? –

+0

완료 후 작업 출력 매핑 수를 확인하십시오. – Amit

+0

감속 기 작업이 실행 중입니다. 그러나 어떤 이유로 System.out.println 문을 로그 파일에 쓰지 않습니다. 이것은 이상합니다. –

답변

0

나는이 질문에 당신의 이전 문제의 코드를 기반으로 가정 다음 reduce 방법 서명이 잘못 때문에 mapreduce composite Key sample - doesn't show the desired output

public class CompositeKeyReducer extends Reducer<Country, IntWritable, Country, IntWritable> { 

    public void reduce(Country key, Iterator<IntWritable> values, Context context) throws IOException, InterruptedException { 

    } 
} 

가 실행되고 있지 줄일 수 있습니다. 당신은이 :

public void reduce(Country key, Iterator<IntWritable> values, Context context)

그것은해야한다 :

public void reduce(Country key, Iterable<IntWritable> values, Context context)

이 당신이 클래스에 @Override 주석을 추가해야 다시 발생하지 않도록하려면. 서명이 잘못되었다는 것을 알려줍니다.

+0

알았어요. 시도해보고 알려 드리겠습니다. –

+0

reduce 매개 변수에서 "Iterator"에서 "Iterable"로 변경되었습니다. 항아리를 만들고 프로그램을 운영했습니다. 여전히 출력에 변화가 없다. 것은 내가 감속기 (sytem.out.println)에 넣은 주석을 보지 못한다. 이것은 매우 이상합니다. 내 드라이버 코드도보고 싶니? '댓글'상자에 코드를 게시하려면 어떻게해야합니까? 고마워요 –

+0

출력이'part-r-00000' 또는'part-m-00000'과 같은가요? 작업 카운터에서 감량 단계의 카운트를 볼 수 있습니까? –

0

코드가 변경되지 않았습니다. 이제 작동합니다. 나는 하둡 클로 듀다 (Hadoop Cloudera) 이미지를 다시 시작했으며 지금은 작동합니다. 나는 이것이 일어난 것을 믿을 수 없다.