字节偏移作为MapReduce中行的唯一排序标识符

时间:2016-12-10 12:54:32

标签: java hadoop mapreduce

我的任务是处理大文件的记录并输出它以保留订单。无法从一行中的任何字段中提取订单,因此我尝试使用来自TextInputFormat的字节偏移用于这些目的,但遇到的问题是不同行的数量与不同偏移的数量不同。以下是我的代码的样子:

映射器:

public void map(LongWritable offset, Text text, Context ctx) {
    ctx.getCounter(Main.COUNTERS.DISTINCT_LINES).increment(1l);
    ctx.write(offset, processLine(text.toString()));
}

减速机:

public void reduce(LongWritable offset, Iterable<Text> texts, Context ctx) {
    ctx.getCounter(Main.COUNTERS.DISTINCT_OFFSETS).increment(1l);

    for(Text txt : texts) ctx.write(txt, NullWritable.get());
}

看来我得到的不同行数大于不同偏移量的数量。

更令人困惑的是,在打印了与多行关联的偏移后,偏移0不在此列表中,拒绝了每个分割偏移从0开始的假设。

有人可以解释这种行为吗?

0 个答案:

没有答案