标签:run shuff 标准输入 conf 文件 min python开发 输入 for
-jobconf mapred.reduce.tasks=2【此属性针对下面的例子都有效】 map.output.key.field.separator:指定map输出<key,value>对之后,其中key内部的分割符。 num.key.fields.for.partition:指定分桶时,按照分隔符切割后,用于分桶key所占的列数。 -partitioner org.apache.hadoop.mapred.lib.KeyFieldBasedPartitioner:前两个参数,要配合这个partitioner,没有的话会报错 例如:map.output.key.field.separator = , num.key.fields.for.partition = 2 -partitioner org.apache.hadoop.mapred.lib.KeyFieldBasedPartitioner 一行数据:1 , 2 , 3 , 4 , 5(在这里1 2 之间的逗号是key内部的分隔符,并且1,2格式key的数据分为到同一桶) stream.map.output.field.separator: map中的key与value的分隔符 stream.num.map.output.key.fields:指定map输出按照分隔符切割后,key所占有的列数,之前的是key,之后的是value 例如:map.output.key.field.separator = , num.key.fields.for.partition = 2 -partitioner org.apache.hadoop.mapred.lib.KeyFieldBasedPartitioner stream.map.output.field.separator = : stream.num.map.output.key.fields = 3 输入:1 , 2 , 3 , 4 , 5 1 , 2 , 2 , 4 , 5 1 , 3 , 4 , 4 , 5 1 , 3 , 3 , 4 , 5 输出part-00000:1 , 2 , 2 : 4 , 5 1 , 2 , 3 : 4 , 5 输出part-00000:1 , 3 , 3 : 4 , 5 1 , 3 , 4 : 4 , 5 1 , 2 是分桶值,1 , 2 , 3是key, 4 , 5是value。在这里1 2 之间的逗号是key内部的分隔符,1 , 2格式key的数据分为到同一桶
3.2 reduce阶段
stream.reduce.output.field.separator:reduce中key与value的分隔符
stream.num.reduce.output.key.fields:reduce中分隔符的位置
HADOOP_CMD="/home/hadoop/hadoop/bin/hadoop" STREAM_JAR_PATH="/home/hadoop/hadoop/contrib/streaming/hadoop-streaming-1.2.1.jar" INPUT_PATH_A="/a.txt" INPUT_PATH_B="/b.txt" OUTPUT_PATH="/output" $HADOOP_CMD fs -rmr $OUTPUT_PATH #mapreduce在运行时,文件系统不能存在output目录(目录名字随意) $HADOOP_CMD jar $STREAM_JAR_PATH -input $INPUT_FILE_PATH_A,$INPUT_FILE_PATH_B -output $OUTPUT_SORT_PATH -mapper "python map.py" -reducer "python red.py" -file ./map.py -file ./red.py -jobconf mapred.reduce.tasks=2 -jobconf map.output.key.field.separator=, -jobconf num.key.fields.for.partition=1 \ -partitioner org.apache.hadoop.mapred.lib.KeyFieldBasedPartitioner -jobconf stream.map.output.field.separator=: -jobconf stream.num.map.output.key.fields=3
a.txt内容
1,2,3:hadoop 1,2,1:hadoop 1,2,5:hadoop 1,3,4:hadoop 1,2,9:hadoop 1,2,11:hadoop 1,2,7:hadoop 1,3,15:hadoop 1,3,14:hadoop 1,2,19:hadoop
1,2,0:java 1,2,2:java 1,2,8:java 1,3,4:java 1,2,2:java 1,2,14:java 1,2,12:java 1,3,1:java 1,3,5:java 1,2,3:java
4、结果输出
1,2,0:java 1,2,1:hadoop 1,2,2:java 1,2,2:java 1,2,3:hadoop 1,2,3:java 1,2,5:hadoop 1,2,7:hadoop 1,2,8:java 1,2,9:hadoop 1,2,11:hadoop 1,2,14:java 1,2,19:hadoop
1,3,1:java 1,3,4:hadoop 1,3,4:java 1,3,5:java 1,3,14:hadoop 1,3,15:hadoop
5、结果分析
Python开发MapReduce系列(二)Python实现MapReduce分桶
标签:run shuff 标准输入 conf 文件 min python开发 输入 for
原文地址:http://www.cnblogs.com/liangjf/p/7586457.html