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



我有一个文本文件和一个解析器,它将解析每一行并存储到我的customSplitInput中,我在自定义FileInputFormat阶段进行解析,因此我的拆分是自定义的。现在,我有两个分割,每个分割中都包含我的数据列表。

但现在,我的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;
    }

map()对于InputFormat中(或由其引用)RecordReader的每条记录调用一次。例如,TextInputFormat为输入中的每一行调用map(),即使分割中通常有许多行。

相关内容

  • 没有找到相关文章

最新更新