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

vhmi4jdf  于 2021-05-29  发布在  Hadoop
关注(0)|答案(0)|浏览(268)

我的一个任务是处理一个大文件的记录并输出它,保持顺序。无法从行中的任何字段提取顺序,因此我尝试使用 TextInputFormat 为了这些目的,但是面临一个问题,即不同行的数目与不同偏移的数目不同。我的代码是这样的:
Map器:

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 .
有人能解释一下这种行为吗?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题