【发布时间】:2011-06-16 10:16:40
【问题描述】:
稍微简化一下我的问题,我有一组带有“记录”的文本文件,这些“记录”由双换行符分隔。喜欢
'多行文字'
'空行'
'多行文字'
'空行'
等等。
我需要分别转换每个多行单元,然后对它们执行 mapreduce。
但是,我知道使用 hadoop 代码样板中的默认字数设置,以下函数中 value 变量的输入只是一行,并且不能保证输入与前一个连续输入行。
public void map(LongWritable key, Text value,
OutputCollector<Text, IntWritable> output,
Reporter reporter) throws IOException ;
我需要输入 value 实际上是双换行符分隔的多行文本的一个单元。
一些搜索发现了一个RecordReader 类和一个getSplits 方法,但没有简单的代码示例让我一头雾水。
另一种解决方案是将多行文本中的所有换行符替换为空格字符并完成。我宁愿不这样做,因为有相当多的文本并且在运行时方面很耗时。如果我这样做,我还必须修改很多代码,所以通过 hadoop 处理它对我来说最有吸引力。
【问题讨论】: