大数据流量分析系统

大数据流量分析系统

前几天去了移动营业厅办了个卡,就不说某动的内幕了,说说上行流量和下行流量统计手机号码的总流量。这次我们利用大数据来分析,大数据也有三大框架,Hadoop是离线计算框架,Storm是实时计算框架,Spark是内存计算框架。这里我们使用Hadoop,因为已经有流量的数据,只需统计出来就可以了。

首先我们没有移动的真实数据,只能伪造数据。
这里写图片描述
之前做了个excel生成数据的系统,这里生成了手机号,32位随机码,上行流量,下行流量,状态码。

map.put("CODEA", "131"+_stringUtils.getCharAndNumr(8, 1));
                map.put("CODEB", _stringUtils.getRandomName());
                map.put("CODEC", _stringUtils.getCharAndNumr(3, 1));
                map.put("CODED", _stringUtils.getCharAndNumr(4, 1));
                map.put("CODEE", "200");

1、用java生成excel文件,再复制转成log文件,数据如下:
这里写图片描述
2、再上传到hdfs中
由于使用windows测试,hadoop环境是安装在windows上。
想学习大数据,又觉得在linux上难操作的,可加QQ490647751,获取windows-hadoop文件资料,只要修改自己的jdk,hadoop环境,一键打开hadoop,网页运行localhost:8088和locahost:50070即可。

想学习大数据的童鞋,多关注本博客,谢谢!

final FSDataOutputStream out = fileSystem.create(new Path(FILE));
        final FileInputStream in = new FileInputStream("D:/HTTP0804.logs");
        IOUtils.copyBytes(in, out, 1024, true);

// 将D盘中的HTTP0804.logs文件上传到hdfs中的FILE路径中

3、用hadoop计算生成文件

@Override
        protected void map(LongWritable key, Text value, Mapper<LongWritable, Text, Text, FlowBean>.Context context)
                throws IOException, InterruptedException {
            //1、接受数据
            String line = value.toString();
            //2、数据切片
            String[] fields = line.split("\t");
            //3、拿到关键字段
            String phoneStr = fields[0];

            long upFlow = Long.parseLong(fields[fields.length - 3]);
            long dfFlow = Long.parseLong(fields[fields.length - 2]);
            //4、数据输出到reduce阶段
            context.write(new Text(phoneStr), new FlowBean(upFlow, dfFlow));
        }
@Override
        protected void reduce(Text key, Iterable<FlowBean> values, Reducer<Text, FlowBean, Text, FlowBean>.Context context)
                throws IOException, InterruptedException {
            //初始化求和变量
            long sum_upFlow = 0;
            long sum_dfFlow = 0;
            //遍历累加求和
            for(FlowBean b:values){
                sum_upFlow += b.getUpFlow();
                sum_dfFlow += b.getDfFlow();

                FlowBean result = new FlowBean(sum_upFlow, sum_dfFlow);
                context.write(key, result);
            }

        }
hadoop jar flow0804.jar com.yanhui.hadoop.FlowLogsCount /yanhui/in /yanhui/out

4、下载该文件
这里写图片描述
从图上看,手机号,上行流量,下行流量,总流量这样输出。

获取源码学习,可点击下载:http://47.98.237.162/detail/1/169

猜你喜欢

转载自blog.csdn.net/sinat_15153911/article/details/81428736