Hadoop系列之FieldSelectionMapReduce用法

来源:互联网 发布:卖家怎么加入淘宝联盟 编辑:程序博客网 时间:2024/06/05 03:39

Hadoop的工具类org.apache.hadoop.mapred.lib.FieldSelectionMapReduce帮助用户高效处理文本数据, 就像unix中的“cut”工具。工具类中的map函数把输入的key/value对看作字段的列表。 用户可以指定字段的分隔符(默认是tab), 可以选择字段列表中任意一段(由列表中一个或多个字段组成)作为map输出的key或者value。 同样,工具类中的reduce函数也把输入的key/value对看作字段的列表,用户可以选取任意一段作为reduce输出的key或value。例如:

$HADOOP_HOME/bin/hadoop  jar $HADOOP_HOME/hadoop-streaming.jar \    -input myInputDirs \    -output myOutputDir \    -mapper org.apache.hadoop.mapred.lib.FieldSelectionMapReduce\    -reducer org.apache.hadoop.mapred.lib.FieldSelectionMapReduce\    -partitioner org.apache.hadoop.mapred.lib.KeyFieldBasedPartitioner \    -jobconf map.output.key.field.separa=. \    -jobconf num.key.fields.for.partition=2 \    -jobconf mapred.data.field.separator=. \    -jobconf map.output.key.value.fields.spec=6,5,1-3:0- \    -jobconf reduce.output.key.value.fields.spec=0-2:5- \    -jobconf mapred.reduce.tasks=12

选项“-jobconf map.output.key.value.fields.spec=6,5,1-3:0-”指定了如何为map的输出选取key和value。Key选取规则和value选取规则由“:”分割。 在这个例子中,map输出的key由字段6,5,1,2和3组成。输出的value由所有字段组成(“0-”指字段0以及之后所有字段)。

选项“-jobconf reduce.output.key.value.fields.spec=0-2:0-”(译者注:此处应为”0-2:5-“)指定如何为reduce的输出选取value。 本例中,reduce的输出的key将包含字段0,1,2(对应于原始的字段6,5,1)。 reduce输出的value将包含起自字段5的所有字段(对应于所有的原始字段)

0 0
原创粉丝点击