<예제>


map 역할 : dump.py 에서 hadoop 파일을 읽도록 한다. 조건에 맞는 형태이면 print를 한다.

reduce 역할 : cat을 사용하여 모든 결과를 하나의 파일로 생성한다.

reduce 후 결과 정렬 : hadoop 파일에서 \t 단위로 파싱을 하고 1번째 필드(예, 시간 정보)로 정렬할 수 있다. 


cmd="hadoop jar ${HADOOP_MAPRED_HOME}/contrib/streaming/hadoop-streaming-*.jar \
     -D mapred.job.priority=LOW \
     -D mapred.job.name=\"TEST" \
     -D mapred.output.compress=true \
     -D mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec \
    -D stream.map.output.field.separator=\t \
     -D stream.num.map.output.key.fields=1 \
     -output /test \
     -mapper \"dump.py" \
     -reducer cat \
     -file dump.py \

     -numReduceTasks 1"




주의 사항


1)  -numReduceTasks 의 값이 0이면 무조건 reduce가 동작하지 않는다. 1 이상의 값을 지정해야 한다.

2) 필드 구분자는 \t이 기본이며, 명시적으로 다른 구분자를 사용하여 결과 정렬을 할 수 있다. 
    -D stream.map.output.field.separator=\t \

     -D stream.num.map.output.key.fields=1 \ 



참고 

https://hadoop.apache.org/docs/r1.2.1/streaming.html

Posted by '김용환'
,