使用Hadoop时,如何自定义FileInputFormat以读取Java中的多行文件



我使用的是Java中的MapReduce框架,我想创建一个自定义的文件输入格式
假设我的文件格式类似于:
---------------
$-flag-$

真正想要什么
>$-flag-$

另一个
部分
------------
在这种情况下,每个记录都被视为多行的数组
按照教程,我写了这个:

public class CustomInputFormat extends FileInputFormat<Text, IdxValues> {
public RecordReader<Text, IdxValues> getRecordReader(
InputSplit input, JobConf job, Reporter report) throws IOException {
report.setStatus(input.toString());
return new CustomReader(job, (FileSplit)input);
} 
}

现在我想知道我应该如何实现CustomReader类,以将[我真正想要的东西]和[<em]以及另一部分>>分别读取为两个数组?

我已经做了类似的事情。这里我有"$$$"作为分隔符(我让它作为配置参数传递给作业)。您可以在这里查看代码,并在这里查看同一项目的具体实现。我定制了RecordReader和InputFormat。

最新更新