应该mapreduce映射文本文件的一行,然后缩小或处理整个文本文件吗?

时间:2018-09-10 15:39:21

标签: hadoop mapreduce

我正在50k文本文档1-100个“页面”上运行Mapreduce作业。我对文档的执行不多,只是一些正则表达式过程。 MapReduce大约需要7个小时。

mapper函数在一行文本上运行,基本上每个文档中每一行文本都会调用map函数,这需要很多过程。然后,reducer运行并合并数据。

public class TextMetricsMapper extends Mapper<LongWritable, Text, Text, Text> {
      @Override
      public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
            StringBuilder sb = new StringBuilder();
            String line = value.toString();
…

由于我正在阅读小的文本文件,因此似乎大部分处理时间都花在了调用映射器上。我的意思是,如果50,000个文件中的1个具有5,000行,那么仅针对该文件的5,000映射过程。

如何更改映射器以仅读取整个文件?我真的很想一次在映射器中查看整个文档,以创建所需的统计信息。

*由于业务需求,我必须使用Hadoop。

0 个答案:

没有答案