2012-08-15 3 views
4

AWS에서 Hadoop을 사용하여 처리하고자하는 Hadoop SequenceFile 수가 많습니다. 기존 코드의 대부분은 Ruby로 작성되어 있으므로 Amazon EMR의 맞춤 루비 매퍼 (Custom Ruby Mapper) 및 감속기 스크립트와 함께 Hadoop Streaming을 사용하고 싶습니다.SequenceFile (AWS)을 사용한 Hadoop 스트리밍

시퀀스 파일을 Hadoop Streaming과 통합하는 방법과 입력 내용이 내 Ruby 스크립트에 어떻게 제공되는지에 대한 문서는 찾을 수 없습니다. SequenceFiles를 사용하기 위해 작업을 시작하는 방법 (EMR 또는 일반 Hadoop 명령 줄에서 직접 수행)에 대한 지침과 데이터를 스크립트에 제공하는 방법에 대한 정보를 제공합니다.

- 편집 : 이전에 실수로 SequenceFiles 대신 StreamFiles를 참조 했었습니다. 내 데이터에 대한 설명서가 잘못되었다고 생각하지만 사과합니다. 변화에 대한 대답은 쉽습니다. 당신은 (그리고해야)가 사용할 수있는

% hadoop jar $HADOOP_INSTALL/contrib/streaming/hadoop-*-streaming.jar \ 
    -input input/ncdc/sample.txt \ 
    -output output \ 
    -mapper ch02/src/main/ruby/max_temperature_map.rb \ 
    -reducer ch02/src/main/ruby/max_temperature_reduce.rb 

이 당신을 요구하고 있지만 명령이 다음과 같이 보일 것이다 하둡 명령 줄 스크립트를 감소 루비 맵을 사용하는 것입니다 경우

+0

[Mandy] (https://github.com/forward/mandy) 프레임 워크를 사용해 보셨습니까? 나는 몇 달 동안 그것을 사용 해왔고 그것은 나를 위해 꽤 잘 작동한다. – Edenbauer

답변

1

해답은 입력 형식을 Hadoop의 명령 줄 인수로 지정하는 것입니다.

-inputformat SequenceFileAsTextInputFormat

기회는 당신이 텍스트로 SequenceFile을 원하는, 그러나 또한 SequenceFileAsBinaryInputFormat 그게 더 적절한 경우가있다.

0

확실하지 않음 큰 데이터 세트를 가진 결합기. -combiner 옵션을 사용하여 추가하십시오. 결합기 출력은 매퍼 (mapper)로 직접 공급 될 것입니다 (단, 매 번 호출 될 횟수를 보장하지는 않습니다). 그렇지 않으면 입력이 분할되고 (표준 hadoop 프로토콜에 따라) 매퍼에 직접 입력됩니다. 이 예제는 O'Reily 's Hadoop : The Definitive Guide 3 판입니다. 스트리밍에 관한 아주 좋은 정보와 루비로 스트리밍하기위한 섹션이 있습니다.

관련 문제