我的一个任务是处理一个大文件的记录并输出它,保持顺序。无法从行中的任何字段提取顺序,因此我尝试使用 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
.
有人能解释一下这种行为吗?
暂无答案!
目前还没有任何答案,快来回答吧!