2010-07-26 2 views
1

S3 디렉토리에 많은 수의 텍스트 파일이 있습니다. 각 텍스트 파일에 대해 함수 (부트 스트랩을 통해로드 된 실행 파일)를 적용한 다음 결과를 S3의 출력 디렉토리에 같은 이름의 다른 텍스트 파일에 쓰려고합니다. 따라서 MapReduce 작업에는 명백한 축소 단계가 없습니다.Elastic MapReduce로 파일 처리 - 감속기 단계가 필요하지 않습니까?

내 감속기로 NONE을 사용했지만 출력 디렉토리에 part-00000, part-00001 등과 같은 파일이 가득 찼습니다. 이보다 더 많은 파일이 내 입력 디렉토리에 있습니다. 각 파트 - 파일은 처리 된 단편만을 나타냅니다.

모든 조언을 주시면 감사하겠습니다. 그것이 내가 하둡에 대해 읽은 것과 같다

+0

모두 도움을 주셔서 감사합니다. 하둡 스트리밍 FAQ에서이 질문에 대한 또 다른 답변을 찾았습니다. http://hadoop.apache.org/common/docs/current/streaming.html#How+do+I+process+files%2C+one+per +지도 % 3F – 345871345

답변

0

는 매퍼 출력

4

하둡은 신원 감속기라는 감속기를 제공을 병합 단지 매퍼 출력을 변경하지 않는 경우에도 당신은 감속기를 필요로한다는 것이다.

신원 감속기는 취한 모든 것을 그대로 출력합니다 (신원 관계입니다). 이것이 사용자가 원하는 작업이며, 감속기를 지정하지 않으면 Hadoop 시스템이이 감속기를 자동으로 작업에 사용합니다. Hadoop 스트리밍에서도 마찬가지입니다. 이 감속기는 당신이하는 일에 정확히 사용됩니다.

파일을 출력하지 않는 작업을 절대로 실행하지 않았습니다. ####. 나는 약간의 조사를했고 당신이 OutputFormat 클래스를 서브 클래 싱함으로써 당신이 원하는 것을 할 수 있다는 것을 발견했다. 내가 여기에서 발견 한 것을 볼 수 있습니다 : http://wiki.apache.org/hadoop/FAQ#A27. 미안하지만 나는 모범을 보이지 않는다.

내 소스를 사이트에 올리려면 Tom White의 저서 http://www.hadoopbook.com/에서 대부분을 배웠습니다.

0

감속기가 필요하지 않습니다. 당신은 예를 들어

또한
job.setNumReduceTasks(0); 

, 당신은 입력 파일이 splitable하지 하둡을 말할 수있는 각 매퍼가 하나 개의 완전한 입력 파일을 처리 할 수 ​​있도록, 작업 구성 단계에서 0으로 감속기의 수를 설정할 수 있습니다. FileInputFormat는 단일 매퍼에 의해 처리되는 것을 의미한다 분열성하지 파일을 표시하기 위해 사용될 수있는 방법

protected boolean isSplitable(JobContext context, Path filename) 

있다. 설명서는 here을 참조하십시오. 방금 ​​질문을 다시 읽었을 때 입력 내용이 파일 이름 목록에있는 파일 일 가능성이 높습니다. 따라서 파일을 분할하려는 경우 또는 한 매퍼에서만 실행할 수 있습니다.

귀하의 상황에서 나는 s3의 파일 이름 목록 인 입력이 있습니다. mapper 입력은 파일 이름이며, 다운로드하여 exe를 실행합니다. 이 exe 실행의 출력은 s3으로 업로드되고 매퍼는 다음 파일로 이동합니다. 그런 다음 매퍼는 아무 것도 출력 할 필요가 없습니다. 나중에 입력에 대해 확인할 수 있도록 처리 된 파일 이름을 출력하는 것이 좋습니다. 방금 설명한 방법을 사용하면 isSplitable 메서드를 사용할 필요가 없습니다.