• 手机号流量统计---Mapreduce项目分析


    文档显示:

       

     每行依次是 ~手机号~上行流量~下行流量

    需求分析:

     需要统计各自的手机号,及上行、下行、总流量

    具体做法:

    1.定义map输入输出类型

     通常情况下map输入key-value就是longwritable,text

     我们知道Map读取的过程为:读一行返回一个key-value对,每调用一行就执行一次map方法。而输出value应该是每行的上行流量和下行流量以及总流量,我们想到了对象。输出value可以为bean----mr程序中,可以使用自定义的类型作为mr的输出数据类型,但是前提是实现hadoopwritable序列化机制

    2.创建bean---

       2.1定义属性(注意:long类型

      自行通过setget   /  lambok+data注解 使用属性

      2.2构造方法

      2.3重写序列化write和反序列化方法

       序列化

         

                       

      反序列化(注意:先序列化的先反序列化

         

    3.map阶段

     应该是手机号作为key,上行流量+下行流量作为value

    小技巧:

         1.如果line中间数据有丢失,可以正着+倒着配合获取字段)

         2.构造函数参数和中间设置要机灵点儿哦

            

     3.1map完成

          

      3.2.但是由于每次调用map方法都需要new,这样会增大垃圾回收量,所以优化提前new出所需对象,整个过程只需要重新set

    4.reduce阶段

        Map的输出为reduce的输入,设置统计参数

       

    5.job阶段

       Job相当于是模板方法,大量代码都是一致的。所以我们可以找到之前的mapreduce的方法进行 黏贴修改代码、重新导包 即可。

    6.重写toString 避免输出文件中是对象不便于观察

    接下来我们可以在本地跑一下,拍桌子散伙!

                -------补作业了!

  • 相关阅读:
    Python --链接MYSQL数据库与简单操作 含SSH链接
    Jmeter 后置处理器--jp@gc
    Jmeter 接口测试 响应结果中文是Unicode转为中文
    Jmeter JDBC请求---把数据库结果参数化传递到其他请求
    MySQL根据某字段部分内容分组计数
    Linux 服务器命令,持续更新……
    APP网络测试要点和弱网模拟
    Jmeter JDBC Request 查询语句中有汉字查询结果为空的解决方法
    Jmeter连接Redis,获取Redis数据集
    Jmeter获取接口返回数组的长度
  • 原文地址:https://www.cnblogs.com/Amyheartxy/p/9325219.html
Copyright © 2020-2023  润新知