是什么决定了map()被调用的次数?

时间:2015-03-17 23:34:36

标签: hadoop mapreduce yarn

我有一个文本文件和一个解析器,它将解析每一行并存储到我的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;
    }

1 个答案:

答案 0 :(得分:2)

对于map()RecordReader(或由InputFormat引用的每条记录,都会调用{p> TextInputFormat一次。例如,map()为输入中的每一行调用{{1}},即使拆分中通常有很多行。