<예제>
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 \
참고
'hadoop' 카테고리의 다른 글
[hadoop] hadoop distcp (0) | 2016.02.05 |
---|---|
[hadoop] 왜 hadoop2은 hadoop 요청시 mapreduce.Job: map 99% reduce 33%에서 잠깐 블럭되는 걸까? (0) | 2016.02.03 |
[hadoop] hive 결과를 hadoop 파일 시스템에 저장하기 (0) | 2016.01.28 |
security.UserGroupInformation: PriviledgedActionException as:deploy 에러 (0) | 2016.01.28 |
[hadoop] java.lang.RuntimeException: PipeMapRed.waitOutputThreads(): subprocess failed with code 1 해결하기 (0) | 2016.01.22 |