mapreduce应该Map一行文本文件,然后减少或处理整个文本文件吗?

xmjla07d  于 2021-05-29  发布在  Hadoop
关注(0)|答案(0)|浏览(283)

我正在运行一个mapreduce作业,处理50k文本文档,长度为1-100页。我对doc执行的不多,只是一些regex进程。mapreduce大约需要7个小时。
mapper函数在一行文本上运行,基本上map函数是为每个文档中的每一行文本调用的,这是很多过程。然后减速器运行并合并数据。

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();
…

因为我正在阅读小文本文件,所以我的大部分处理时间似乎都花在了调用Map器上。我的意思是,如果50000个文件中有一个有5000行,那就是5000个Map过程。
如何将Map器更改为只读取整个文件?我真的很想一次在mapper中看到整个文档,以创建我需要的统计信息。

  • 由于业务需要,我不得不使用hadoop。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题