Hadoop相关命令

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gao158190523/article/details/60758194

1.默认情况

Hadoop streaming的默认情况下,是以”\t”作为分隔符的。对于标准输入来说,每行的第一个”\t” 以前的部分为key,其他部分为对应的value。如果一个”\t”字符没有,则整行都被当做key。这个

2.map阶段的sort与partition

map阶段很重要的阶段包括sort与partition。排序是按照key来进行的。咱们之前讲了默认的key是由”\t”分隔得到的。我们能不能自己控制相关的sort与partition呢?答案是可以的。

先看以下几个参数: 
map.output.key.field.separator: map中key内部的分隔符 
num.key.fields.for.partition:
分桶时,key按前面指定的分隔符分隔之后,用于分桶的key占的列数。通俗地讲,就是partition时候按照key中的前几列进行划分,相同的key会被打到同一个reduce里。 
-partitioner org.apache.hadoop.mapred.lib.KeyFieldBasedPartitioner 前两个参数,要配合partitioner选项使用!

stream.map.output.field.separator: map中的key与value分隔符 
stream.num.map.output.key.fields: map中分隔符的位置,该选项可以指定按照前几列来进行排序,通常配合num.key.fields.for.partition使用,用     来对排好序后按照num.key.fields.for.partition指定的分桶值来分桶。 
stream.reduce.output.field.separator: reduce中key与value的分隔符 
stream.num.reduce.output.key.fields: reduce中分隔符的位置

猜你喜欢

转载自blog.csdn.net/gao158190523/article/details/60758194