zoukankan      html  css  js  c++  java
  • hadoop4--深入mapreduce

    运行结果附图

    本节课程主要内容为深入学习MapReduce原理,并编写java程序对日志文件进行流量统计。

    1. 首先编写MapReduce代码,并在Eclipse中调试成功

      代码主要思路:

      map阶段:

       以user:spname组成的Text作为key;以uploadTraffic,downloadTraffic组成的Text作为value,进行map映射
      

      reduce阶段:

       仍以user:spname组成的Text作为key;
       对于value的操作:先从Text中拆分出uopladTraffic和downloadTraffic,转换成long型分别作累加,得到uploadTrafficSum和downloadTrafficSum,同时为此key进行计数得到count.
       最后以count,uploadTrafficSum,downloadTrafficSum组成的Text作为value值
      

      2015-04-09 09:16:59 的屏幕截图

    2. 打jar包,通过Hue上传到HDFS,再下载到本地的docker中的master上

    3. 在Hadoop集群上运行jar包

      2015-04-08 12:49:59 的屏幕截图

      2015-04-08 12:50:27 的屏幕截图

    4. 查看运行结果

      2015-04-08 12:51:33 的屏幕截图

      2015-04-08 13:02:05 的屏幕截图

    问题记录

    在编写MapReduce的代码的时,输入输出的key,value的类型对应很重要,需要将以下几个地方设置好:
    
    1.建立map类,reduce类的泛型 
    
    2.map函数和reduce函数的参数(其参数的前两个:key,value均代表输入类型)
    
    3.main函数中的配置,
    
      当map和reduce的输出类型相同时,可以直接使用 
    
      job.setOutputKeyClass(Text.class);
      job.setOutputValueClass(IntWritable.class);
      两个方法进行设置,并可以使用job.setCombinerClass(Reduce.class);将map的结果进行合并输出给reduce
    
      但是当map和reduce的输出类型相不同时,需要分别设置map和reduce的输出类型,使用函数:
    
       job.setMapOutputKeyClass(Text.class);
        job.setMapOutputValueClass(IntWritable.class);
        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(Text.class);
      并且不能进行job.setCombinerClass(Reduce.class);的设置
  • 相关阅读:
    iframe
    daterangepicker 时间区间选择
    刷新父窗口
    echars
    原生http请求封装
    css布局方式总结
    js获取http请求响应头信息
    js事件循环机制 (Event Loop)
    http协议的状态码
    javaScript函数节流与函数防抖
  • 原文地址:https://www.cnblogs.com/ivywenyuan/p/4579369.html
Copyright © 2011-2022 走看看