perl实现map-reduce框架实例-wordcount

来源:互联网 发布:api原油数据分析 编辑:程序博客网 时间:2024/06/06 14:02

       近期学习hadoop,利用脚本语言perl实现map-reduce框架数据流编程,实现经典实例 wordcount,代码核心在于mapreduce的shuffle环节,将map的输出按照key进行归桶,所以相同的单词必定在同一个桶中,且按序排好,代码如下:

       [abc@build12 ~/perl/wordcount/WordCountPerl_test]$ cat wordcount_mapper.pl 
       #!/usr/bin/perl


       while(my $line=<STDIN>) {
           chomp($line);
           my @word_array = split(/ /, $line);
           $len = 0;
           #print $#word_array."\n";
           while($len <= $#word_array) {
               print $word_array[$len]."\t1\n";
               #print $word_array[len];
               $len = $len + 1; 
            }
         


      [abc@build12 ~/perl/wordcount/WordCountPerl_test]$ cat wordcount_reducer.pl 
      #!/usr/bin/perl

      $old = "\001";
      $sum = 0; 
      while($line = <STDIN>) {
          chomp($line);   #chomp()函数去除末尾换行符
          @data = split(/\t/, $line);
          if($#data != 1) {next;}
          if($data[0] ne $old) {
              if($old ne "\001") {
                   print $old."==>".$sum."\n";
               }
              $sum = 0;
              $old = $data[0];
            }
           $sum = $sum + $data[1];
      }

     #输出最后一个值
     if($old ne "\001") { 
         print $old."==>".$sum."\n";
     }

0 0
原创粉丝点击