我是hadoop mapreduce的新手。我想开发mapreduce代码以将文件文本转换为小写。但是与文件中前面的序列一样。这意味着文件的实际顺序而不是类似于字数数据序列。所以有什么能给我的想法吗?
问问题
1154 次
2 回答
1
只需逐行读取文件,然后将其作为键值<< LineNumber,UPPERCASEOFLINE >>发出,因此每一行的大写将成为reducer的值(只有一个元素的列表)。
现在您所要做的就是将值(每个键的单行)作为reducer 的键发出,您可以将reducer值设为NullWritable。
映射器中的LineNumber对于每行输入以 1 为增量开始。还要重写 isSplitable() 以返回 false 以便使一个文件完全由一个映射器处理。
于 2012-07-25T09:46:22.167 回答
0
通过hadoop map reduce程序将给定文本转换为大写时,我遇到了同样的问题。
以下是我的减速器代码片段
public static class UpperCaseReducer extends MapReduceBase implements Reducer<Text,Text,Text,Text>
{
public void reduce(Text key,Iterator<Text> value,OutputCollector<Text, Text> output,Reporter rporter) throws IOException
{
//while(value.hasNext())
{
String NULL= new String();
//System.out.println(value.toString());
output.collect(value.next(),new Text(""));
}
}
}
在我的映射器代码中,我只是逐行读取输入文本,将其转换为大写,并将原始行作为键传递,并将转换后的文本作为映射器方法中的值作为输出。
于 2015-09-09T18:00:14.083 回答