hadoop streaming怎么设置key

Posted fisherinbox

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hadoop streaming怎么设置key相关的知识,希望对你有一定的参考价值。

充分利用hadoop的map输出自动排序功能,能够有效提高计算效率。
Hadoop streaming框架默认情况下会以‘/t’作为分隔符,将每行第一个‘/t’之前的部分作为key,其余内容作为value,如果没有‘/t’分隔符,则整行作为key;这个key/tvalue对又作为该map对应的reduce的输入。
实际上,通过设置参数,可以根据需要将约定满足要求的数据分布到同一个reducer,又可以通过设置map执行参数将数据内容进行一定的排序,从而提高在reducer中的计算效率。

hadoop 中可以提供配置供用户自主设置的分隔符:
-D stream.map.output.field.separator :设置map输出中key和value的分隔符
-D stream.num.map.output.key.fields : 设置map程序分隔符的位置,该位置之前的部分作为key,之后的部分作为value
-D map.output.key.field.separator : 设置map输出中key内部的分割符——备注:基于该分隔符,shuffle对key数值进行排序
-D num.key.fields.for.partition : 指定分桶时,key按照分隔符切割后,其中用于分桶key所占的列数(配合-partitioner org.apache.hadoop.mapred.lib.KeyFieldBasedPartitioner 使用)
-D stream.reduce.output.field.separator:设置reduce输出中key和value的分隔符
-D stream.num.reduce.output.key.fields:设置reduce程序分隔符的位置

比如下面的输入数据例子,想要基于前两个数值进行hash分桶,将数据分布到同一个reducer,另一方面又想将前四个数字进行排序。需要这样设置:
-D stream.map.output.field.separator=,
-D stream.num.map.output.key.fields=4
-D map.output.key.field.separator=,
-D num.key.fields.for.partition=2

1 1,2,1,1,1  
2 1,2,2,1,1  
3 1,3,1,1,1  
4 1,3,2,1,1  
5 1,3,3,1,1  
6 1,2,3,1,1  
7 1,3,1,1,1  
8 1,3,2,1,1  
9 1,3,3,1,1 

 

以上是关于hadoop streaming怎么设置key的主要内容,如果未能解决你的问题,请参考以下文章

Hadoop Streaming

Hadoop Streaming 使用及参数设置

Hadoop WordCount(Streaming,Python,Java三合一)

Hadoop下怎么使用C程序啊?或者说,怎么使用C调用Hadoop的接口来编写程序呢?

hadoop streaming anaconda python 计算平均值

hadoop streaming编程小demo(python版)