0

我是hadoop mapreduce的新手。我想开发mapreduce代码以将文件文本转换为小写。但是与文件中前面的序列一样。这意味着文件的实际顺序而不是类似于字数数据序列。所以有什么能给我的想法吗?

4

2 回答 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 回答