Hadoop系列之FieldSelectionMapReduce用法

    xiaoxiao2021-03-25  159

    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的所有字段(对应于所有的原始字段)

    转载请注明原文地址: https://ju.6miu.com/read-1007.html

    最新回复(0)