我正在使用Hadoop 2.7.1
我真的很难理解应用流流程排序中的哪一点,如何更改排序顺序以及分隔符。阅读documentation让我更加困惑,因为一些配置变量似乎可以互换使用(参见partitioner example中使用的map.output.key.field.separator
和comparator example中的mapreduce.map.output.key.field.separator
。 / p>
此外,当它们一起使用时会发生什么?他们互相躲过了吗?
mapreduce.map.output.key.field.separator
map.output.key.field.separator
stream.map.output.field.separator
stream.num.map.output.key.fields
mapreduce.partition.keypartitioner.options
mapred.text.key.partitioner.options
mapreduce.fieldsel.data.field.separator
mapreduce.fieldsel.map.output.key.value.fields.spec
mapreduce.fieldsel.reduce.output.key.value.fields.spec
stream.reduce.input.field.separator
stream.num.reduce.input.fields
stream.reduce.output.field.separator
stream.num.reduce.output.fields
只需搜索streaming documentation即可查看相关内容。大多数(不包含在mapred-default.xml中)。
我觉得我的困惑可能是由于将记录分成键和值,以及将键分成多个字段之间的区别。
我对这个过程的理解(暂时忽略了合成器):
Mappers
Mapper
输出分为(key
,value
)对并发送至Partitioner
Partitioner
根据密钥(和密钥中的字段?)将Mapper
输出发送到Comparator
Comparator
对每个分区进行排序并将其发送到Reducer