2009-05-20 6 views
6

Hadoop Streaming 작업의 출력 파일 이름을 제어하는 ​​방법이 있습니까? 특히 필자는 필자의 작업 출력 파일의 내용과 이름을 감속기가 출력하는 케킷으로 정리하고 싶습니다. 각 파일은 하나의 키에 대한 값만 포함하고 그 이름은 키가됩니다.Hadoop 스트리밍 작업의 출력 파일 이름과 내용을 어떻게 제어합니까?

업데이트 : 방금 ​​찾은 답변 - 작업 출력 형식으로 MultipleOutputFormat에서 파생 된 Java 클래스를 사용하면 출력 파일 이름을 제어 할 수 있습니다. http://hadoop.apache.org/core/docs/current/api/org/apache/hadoop/mapred/lib/MultipleOutputFormat.html

나는 거기에 이것에 대한 어떤 샘플을 보지 못했어요 ... 사람이 사용자 정의 출력 형식 자바 클래스의 사용을 만드는 하둡 스트리밍 샘플을 지적 할 수 있습니까?

답변

8

작업 출력 형식으로 MultipleOutputFormat에서 파생 된 Java 클래스를 사용하면 출력 파일 이름을 제어 할 수 있습니다. http://hadoop.apache.org/core/docs/current/api/org/apache/hadoop/mapred/lib/MultipleOutputFormat.html

하나의 JAR이 지원되기 때문에 실제로 ... 스트리밍 항아리 포크와이를 참조 할 수 있도록 작업을 스트리밍을 위해에 새 출력 형식의 클래스를 넣어 가지고, 하둡 스트리밍을 사용하는 경우

편집 : 버전 0.20.2의로 는 하둡이 클래스는 사용되지 않으며 당신은 지금 사용해야합니다 http://hadoop.apache.org/docs/mapreduce/current/api/org/apache/hadoop/mapreduce/lib/output/MultipleOutputs.html

+1

새 문서에 대한 링크 끊어짐 –

-1

일반적으로 Hadoop은 개별 디렉토리가 아닌 전체 디렉토리를 출력으로 간주합니다. 스트리밍 또는 일반 Java 작업 사용 여부에 관계없이 파일 이름을 직접 제어 할 수있는 방법은 없습니다.

그러나 작업이 끝나면이 분할 작업을 수행하고 이름을 변경하는 일을 막을 수있는 방법은 없습니다. 당신은 $ HADOOP dfs -cat path/to/your/output/directory/part- *를 할 수 있으며, 내용을 키로 분할하여 새 파일에 쓰는 스크립트로 파이프 할 수 있습니다.

+0

를 일반 그게 당신이 먹고 싶어하지 않는 방식으로. –

관련 문제