출력 파일 이름과 Hadoop 스트리밍 작업의 컨텐츠를 어떻게 제어합니까?

StackOverflow https://stackoverflow.com/questions/887835

문제

Hadoop 스트리밍 작업의 출력 파일 이름을 제어 할 수있는 방법이 있습니까? 특히 작업의 출력 파일 컨텐츠 및 이름을 KET에 의해 구성하기를 원합니다. 각 파일에는 하나의 키에 대한 값 만 포함되며 그 이름은 키입니다.

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

나는 이것에 대한 샘플을 보지 못했습니다 ... 누구든지 사용자 정의 출력 형식 Java 클래스를 사용하는 Hadoop 스트리밍 샘플을 지적 할 수 있습니까?

도움이 되었습니까?

해결책

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

Hadoop 스트리밍을 사용할 때는 하나의 항아리 만 지원되므로 실제로 스트리밍 JAR을 포크하고 스트리밍 작업을 참조하여 참조 할 수 있도록 새 출력 형식 클래스를 넣어야합니다 ...

편집하다:Hadoop의 버전 0.20.2 에서이 클래스는 더 이상 사용되지 않았으며 이제 사용해야합니다.http://hadoop.apache.org/docs/mapreduce/current/api/org/apache/hadoop/mapreduce/lib/output/multipleoutputs.html

다른 팁

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

그러나 작업이 완료된 후이 분할과 스스로 이름을 바꾸는 것을 막을 수있는 것은 없습니다. $ hadoop dfs -cat path/to/your/output/directory/part-*를 $ 할 수 있으며 Keys에 의해 컨텐츠를 분할하여 새 파일에 쓸 수있는 스크립트로 파이프 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top