Hadoop mapreduce为流定义分隔符

Hadoop mapreduce为流定义分隔符,hadoop,mapreduce,hadoop-streaming,hadoop-partitioning,Hadoop,Mapreduce,Hadoop Streaming,Hadoop Partitioning,我正在使用Hadoop 2.7.1 我真的很难理解在流式处理中应用排序的点,如何更改排序顺序和分隔符。由于某些配置变量似乎可以互换使用(中使用的c.f.map.output.key.field.separator和中使用的mapreduce.map.output.key.field.separator),因此,阅读更让我困惑 我的问题 在这个过程中,每个配置变量在什么时候被使用,它们到底会影响什么(有没有办法通过查看它们来判断?) 此外,当它们一起使用时会发生什么?它们是否相互超越 mapre

我正在使用Hadoop 2.7.1

我真的很难理解在流式处理中应用排序的点,如何更改排序顺序和分隔符。由于某些配置变量似乎可以互换使用(中使用的c.f.
map.output.key.field.separator
和中使用的
mapreduce.map.output.key.field.separator
),因此,阅读更让我困惑

我的问题
  • 在这个过程中,每个配置变量在什么时候被使用,它们到底会影响什么(有没有办法通过查看它们来判断?)
  • 此外,当它们一起使用时会发生什么?它们是否相互超越

    • 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
  • 只需搜索以查看其介绍的上下文。大多数都是(不包含在中)

    我觉得我的困惑可能是因为将记录分为键和值,以及将键分为多个字段

    我对流程的理解(暂时忽略合并器):

  • 发送到
    映射器的输入数据拆分
  • 映射器
    输出被分成(
    )对,并发送到
    分区器
  • Partitioner
    根据键(以及键内的字段?)将
    映射器
    输出发送到
    比较器
  • 比较器
    对每个分区进行排序,并将其发送到
    减速机

  • 键内的字段是什么意思?有称为
    …key.field.separator
    …output.field.separator
    的变量。我假设映射器有如下输出:
    11.12.1.2
    -->{[
    11
    12
    1
    2
    ],
    non/code>}即,具有4个字段且没有值的键。