2012-07-25 25 views
0

我是hadoop mapreduce的新手。我想开发mapreduce代码来转换一个小文件的文本文件,但以前面的文件序列。这意味着在文件的实际顺序,而不是类似于wordcount数据序列。所以可以给我什么想法?如何在Hadoop中只包含案例?

+1

查询不清楚。 – 2012-07-25 07:01:43

回答

1

仅有逐行读取文件中的行和然后发射它作为关键值< < LineNumber上,UPPERCASEOFLINE >>,所以每一行的上壳将成为减速器的值(A列表只有一个元素) 。

现在,所有你需要做的是发出的值(每个键单线)作还原剂的关键,你可以使减速器为NullWritable。

LineNumber在映射程序中,从1开始每增加1行输入一次。 还重写isSplitable()以返回false,以使一个文件完全由一个映射器处理。

+0

还需要编写客户记录阅读器吗? – FourOfAKind 2012-10-07 21:45:17

0

我在通过hadoop map reduce程序将给定文本转换为大写的同时面临同样的问题。

follwing是我的减速器代码段

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("")); 
      } 
     } 
    } 

以我映射器代码,我只读取输入的文本行,并通过线作为其转换成上壳体和使所述原始行键和转换的文本作为我的映射器方法的值作为输出。

相关问题