hadoop streaming,排序,分区

一个简单示例:

hadoop jar ${hdstreaming} \
-D mapreduce.job.queuename=mapreduce.normal \  #Hadoop 2.0一定要指定队列名
-D mapreduce.job.name='UserFeature::Predict' \
-D stream.num.map.output.key.fields=2 \
-D num.key.fields.for.partition=2 \
-D mapreduce.reduce.tasks=90 \
-D mapreduce.min.split.size=1073741824 \    #此参数对数据量小但分区很多的输入有用,很好地提升效率
-mapper "getPredictMap.py" \
-reducer "getPredictReduce.py" \
-file getPredictMap.py \
-file getPredictReduce.py \
-file file_used_in_program \
-input "${inputdir}" \
-output "${outputdir}" \
-partitioner org.apache.hadoop.mapred.lib.KeyFieldBasedPartitioner

Hadoop streaming默认以'/t’作为分隔符,将每行第一个'/t’之前的部分作为key,其余内容作为value,如果没有'/t’分隔符,则整行作为key;比如说map阶段输出的key/value pair, 排序后又作为reduce的输入。

这块有两个常用的参数-D stream.num.map.output.key.fields和-D num.key.fields.for.partition。

二者的区别在于前者指定排序的key(map的输出),后者指定分区的字段(可能仅为key的一部分)。

转载于:https://www.cnblogs.com/cs-jack-cheng/p/4120380.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值