我有一个文本文件和一个解析器,它将解析每一行并存储到我的customSplitInput中,我在自定义的FileInputFormat阶段进行解析,因此我的拆分是自定义的。现在,我有2个拆分,每个拆分中都包含我的数据列表。
但是现在,我的mapper函数在同一个分割中被重复调用。我以为只能根据你拥有的分割数来调用mapper函数?
我不知道这是否适用,但我的自定义InputSplit返回getLength()的固定数字和getLocation()的空字符串数组。我不确定要为这些做些什么。
@Override
public RecordReader<LongWritable, ArrayWritable> createRecordReader(
InputSplit input, TaskAttemptContext taskContext)
throws IOException, InterruptedException {
logger.info(">>> Creating Record Reader");
CustomRecordReader recordReader = new CustomRecordReader(
(EntryInputSplit) input);
return recordReader;
}
答案 0 :(得分:2)
map()
中RecordReader
(或由InputFormat
引用的每条记录,都会调用{p> TextInputFormat
一次。例如,map()
为输入中的每一行调用{{1}},即使拆分中通常有很多行。