从HDFS和MapReduce两方面了解Hadoop(6)

电脑杂谈  发布时间:2019-04-26 04:10:13  来源:网络整理

Reduce 程序

mapreduce从它名字上来看就大致可以看出个缘由,两个动词map和reduce,“map(展开)”就是将一个任务分解成为多个任务,“reduce”就是将分解后多任务处理的结果汇总起来,得出最后的分析结果。如类对继承父类的方法不满意,是可以重写父类的继承的方法的,当调用方法时会优先调用子类的方法。

清单 15. Reduce 程序

  1. public class CharCountReducer extends Reducer< Text, LongWritable, Text, LongWritable> { 
  2.     @Override 
  3.     protected void reduce(Text key, Iterable< LongWritable> values, Context context) 
  4.             throws IOException, InterruptedException { 
  5.         long count = 0; 
  6.         for (LongWritable value : values) { 
  7.             count += value.get(); 
  8.         } 
  9.         context.write(key, new LongWritable(count)); 
  10.     } 
  11. } 

驱动程序

到目前为止,我们已经有了 map 程序和 reduce 程序,我们还需要一个驱动程序来运行整个作业。可以看到我们在这里初始化了一个 Job 对象。Job 对象指定整个 MapReduce 作业的执行规范。我们用它来控制整个作业的运作,在这里我们指定了 jar 包位置还有我们的 Map 程序、Reduce 程序、Map 程序的输出类型、整个作业的输出类型还有输入输出文件的地址。

清单 16. 驱动程序

  1. public class CharCountDriver { 
  2.           public static void main(String[] args) throws Exception { 
  3.           Configuration configuration = new Configuration(); 
  4.           Job job = Job.getInstance(configuration); 
  5.           // Hadoop 会自动根据驱动程序的类路径来扫描该作业的 Jar 包。 
  6.           job.setJarByClass(cn.itweknow.mr.CharCountDriver.class); 
  7.           // 指定 mapper 
  8.           job.setMapperClass(CharCountMapper.class); 
  9.           // 指定 reducer 
  10.           job.setReducerClass(CharCountReducer.class); 
  11.           // map 程序的输出键-值对类型 
  12.           job.setMapOutputKeyClass(Text.class); 
  13.           job.setMapOutputValueClass(LongWritable.class); 
  14.           // 输出键-值对类型 
  15.           job.setOutputKeyClass(Text.class); 
  16.           job.setOutputValueClass(LongWritable.class); 
  17.           // 输入文件的路径 
  18.           FileInputFormat.setInputPaths(job, new Path(args[0])); 
  19.           // 输入文件路径 
  20.           FileOutputFormat.setOutputPath(job, new Path(args[1])); 
  21.           boolean res = job.waitForCompletion(true); 
  22.           System.exit(res?0:1); 
  23.           } 
  24.           } 


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-94214-6.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 穆玉香
      穆玉香

      炒股能致富

    • 任冠弛
      任冠弛

      但伊拉克必须要只效忠美国且永远不许对他国抛媚眼示好

    热点图片
    拼命载入中...