【问题标题】:How to covnert only case in Hadoop?如何在 Hadoop 中仅转换大小写?
【发布时间】:2012-07-25 06:27:15
【问题描述】:

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

【问题讨论】:

    标签: hadoop mapreduce hadoop-streaming


    【解决方案1】:

    只需逐行读取文件,然后将其作为键值发出>,因此每一行的大写都会成为reducer的值(一个带有只有一个元素)。

    现在您所要做的就是将值(每个键的单行)作为 reducer 的 key 发出,您可以将 reducer value 设为 NullWritable。

    映射器中的

    LineNumber 以 1 为增量开始,每行输入一次。 还要重写 isSplitable() 以返回 false 以便使一个文件完全由一个映射器处理。

    【讨论】:

      【解决方案2】:

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

      下面是我的reducer代码sn-p

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

      在我的映射器代码中,我只是逐行读取输入文本,将其转换为大写,并将原始行作为键传递,并将转换后的文本作为映射器方法中的值作为输出。

      【讨论】:

        猜你喜欢
        • 2013-09-26
        • 2018-12-18
        • 2018-08-17
        • 2013-01-25
        • 2011-01-23
        • 1970-01-01
        • 2013-02-04
        • 1970-01-01
        • 2014-06-05
        相关资源
        最近更新 更多