我正在运行一个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。
暂无答案!
目前还没有任何答案,快来回答吧!