복붙노트

[HADOOP] context.write (k, v)에서 값을 출력하는 방법

HADOOP

context.write (k, v)에서 값을 출력하는 방법

내 mapreduce 작업에서 일부 줄을 출력하고 싶습니다.

그러나 내가 이렇게 코딩하면 :     context.write (data, null);

프로그램은 java.lang.NullPointerException을 발생시킵니다.

아래처럼 코딩하고 싶지 않습니다.     context.write (data, 새 텍스트 ( ""));

출력 파일의 모든 줄에서 빈 공간을 잘라야하기 때문입니다.

그것을 해결하는 좋은 방법이 있습니까? 미리 감사드립니다.

미안, 내 실수 야 프로그램을주의 깊게 확인한 이유는 감속기를 결합기로 설정했기 때문입니다.

결합기를 사용하지 않으면     context.write (data, null); 감속기에서 잘 작동합니다. 출력 데이터 파일에는 데이터 라인 만 있습니다.

hadoop 결정적인 가이드에서 NullWritable 설명을 공유하십시오.

NullWritable은 길이가 0 인 직렬화이므로 쓰기 가능한 특수 유형입니다. 바이트 없음 스트림에 쓰거나 읽습니다. 자리 표시 자로 사용됩니다. 예를 들어 필요하지 않은 경우 MapReduce, 키 또는 값을 NullWritable로 선언 할 수 있습니다 이 위치를 사용하기 위해 빈 값을 일정하게 저장합니다. NullWritable도 가능 반대로 값 목록을 저장하려는 경우 SequenceFile의 키로 유용합니다. 키-값 쌍. 불변의 싱글 톤입니다. 인스턴스를 호출하여 검색 할 수 있습니다 NullWritable.get ().

해결법

  1. ==============================

    1.이 목적으로 NullWritable을 사용해야합니다.

    이 목적으로 NullWritable을 사용해야합니다.

  2. from https://stackoverflow.com/questions/15899705/how-to-just-output-value-in-context-writek-v by cc-by-sa and MIT license