简化我的问题,我有一组带有由双换行符分隔的“记录”的文本文件。像使用Hadoop将文本文件中的段落处理为单个记录
'多行文字'
'空行'
'多行文字'
'空行'
等等。
我需要分别转换每个多行单元,然后对它们执行mapreduce。
但是,我知道使用hadoop代码样板中的默认wordcount设置,以下函数中value
变量的输入只是一行,并且不能保证输入与之前的输入连续线。
public void map(LongWritable key, Text value,
OutputCollector<Text, IntWritable> output,
Reporter reporter) throws IOException ;
而且我需要它,输入value
实际上是双新行的一个单元分隔的多行文字。
一些搜索变成了一个RecordReader
类和一个getSplits
方法,但没有简单的代码示例,我可以包裹我的头。
另一种解决方案是用多个空格字符替换多行文本中的所有换行符,并用它来完成。我宁愿不这样做,因为它有相当多的文本,并且在运行时方面很耗时。如果我这样做,我也必须修改很多代码,所以通过hadoop处理它对我来说最具吸引力。
当我需要处理超过64MB的文件或者hadoop开始分割文件时,您的回复实际上会更有帮助。 – JasonMond 2011-06-17 03:26:54