首页 > 代码库 > hadoop-streaming 配置之---参数分割
hadoop-streaming 配置之---参数分割
map:-D stream.map.output.field.separator=. 定义mapoutput字段的分隔符为. 用户可以自定义分隔符(除了默认的tab)-D stream.num.map.output.key.fields=4 第四个.前面的是key,后面的是value。如果该行.的个数少于四个,则整行数据就是key,value是空。 总结:就是划分map输出的key与value的。因为输出的都是文本行。都有个划分标志。对应context.write(key, value)reduce:(同上)-D stream.reduce.output.field.separator=SEP-D stream.num.reduce.output.fields=NUMpartitioner-partitioner org.apache.hadoop.mapred.lib.KeyFieldBasedPartitioner-D stream.map.output.field.separator=.-D stream.num.map.output.key.fields=4-D map.output.key.field.separator=. 字面的解释:map的输出key的field的separator=. (对key再进行切分==二面)#-D num.key.fields.for.partition=2 指定将key分割后的前两部分用做partition-D mapred.text.key.partitioner.options=-k1,2 附注:-k1,2 指定对key进行划分后第1 2个域进行划分(上述解释没有找到相关文档,也不属于原文) example1Output输出(keys) 因为 -D stream.num.map.output.key.fields=4 指定map的输出行前4个作为key,后面为value11.12.1.2 11.14.2.3 11.11.4.1 11.12.1.1 11.14.2.2划分到3个reducer(前面2个字段作为partition的keys) 11.11.4.1 ----------- 11.12.1.2 11.12.1.1 ----------- 11.14.2.3 11.14.2.2 Reducer的每个划分内排序(4个字段同时用于排序) 实现了partitioner不是用map的输出key做partition而是用key的某一部分,对应了java中的自定义partitioner11.11.4.1 ----------- 11.12.1.1 11.12.1.2 ----------- 11.14.2.2 11.14.2.3 example2-D mapred.output.key.comparator.class=org.apache.hadoop.mapred.lib.KeyFieldBasedComparator-D stream.map.output.field.separator=. -D stream.num.map.output.key.fields=4 -D map.output.key.field.separator=.-D mapred.text.key.comparator.options=-k2,2nr-k2,2nr 中-k2,2指定key分割后的第2个域进行排序,n 指定使用数字排序,r指定排序结果最后要进行反转Map输出(keys) 11.12.1.2 11.14.2.3 11.11.4.1 11.12.1.1 11.14.2.2 Reducer的输出(使用第二个字段进行排序) 11.14.2.3 11.14.2.2 11.12.1.2 11.12.1.1 11.11.4.1
hadoop-streaming 配置之---参数分割
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。