首页 > 其他分享 >10.18小测(流量人数统计)

10.18小测(流量人数统计)

时间:2022-10-18 22:49:10浏览次数:62  
标签:preparedStatement 小测 String rs 流量 10.18 hive date 格式

题目要求:给出result.txt文件,导入到mysql中,清洗日期格式,统计视频流量,可视化展示。

需要数据分析的内容:

(1)统计最受欢迎的视频/文章的Top10访问次数 (video/article)

(2)按照地市统计最受欢迎的Top10课程 (ip)

(3)按照流量统计最受欢迎的Top10课程 (traffic)

 

软件准备:要准备虚拟机,zookeeper,hadoop,hive,正常启动服务。

这些都可以在尚硅谷或者黑马视频学习教程里安装,按着步骤来不会错的。

 

数据格式:

 

有俩个思路:

一种是把result.txt导入本地mysql中,完成日期格式清洗,再导入到hive中,完成查询操作,完成可视化。

第二种是直接导入到hive中,完成查询操作后,完成可视化。

 

我的做法:

导入到hive中,清洗日期格式有困难,所以我先在本地mysql完成日期格式清洗,把清洗好的数据导入hive,完成统计数据操作和可视化操作。

 

txt文件导入mysql,这个百度一下就有了,导入成功后,进行日期格式清洗。

txt文件中的日期格式是10/Nov/2016:00:01:02 +0800 这种格式,要换成2016-11-10 00:01:03这种,我是去java程序中完成的。

代码:

public static String[][] b = new String[2000][2]; 
    
    //读出正确日期格式字符串以及对应的ID存入数组中
    public static void qingXi() {
        //建立连接
        Connection connection=DBUtil.getConnection();
        PreparedStatement preparedStatement = null;
        ResultSet rs=null;
        
        //准备查询SQL语句
        String sql = "select ip,Data from b";
        Date parse_date;
        String finalDate = "";
        try {
            int i = 0;
            preparedStatement = connection.prepareStatement(sql);
            rs=preparedStatement.executeQuery();
            SimpleDateFormat input_date = new SimpleDateFormat("dd/MM/yyyy:HH:mm:ss");
            SimpleDateFormat output_date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
             while (rs.next()) {
                 String date = rs.getString("Data");
                 String ip = rs.getString("ip");
                 
                //将date根据“ ”分割成字符串数组
                 String[] a = date.split(" ");
                 //将Nov改成11
                    a[0] = a[0].replaceAll("Nov", "11");
                   try {
                       //将ID和清理好的数据格式存入二维数组中
                        parse_date = input_date.parse(a[0].trim());
                        finalDate = output_date.format(parse_date);
                        b[i][0] = finalDate;
                        b[i][1] = ip;
                        i++;
                    } catch (ParseException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }   
             }
        }catch(SQLException e) {
            e.printStackTrace();
        }finally {
            DBUtil.close(rs, preparedStatement, connection);
        }
        
        
    }
    
    
    
    //根据ID修改数据库中字符串
    public static void run() {
        Connection connection=DBUtil.getConnection();
        PreparedStatement preparedStatement = null;
        //准备修改SQL语句
        String sql="update b set Data=? where ip = ?";
        int i = 0;
        try {
            while(true) {
                //修改数据库中的SQL
                preparedStatement = connection.prepareStatement(sql);
                preparedStatement.setString(1, b[i][0]);
                preparedStatement.setString(2, b[i][1]);
                preparedStatement.executeUpdate();
                i++;
                if(b[i][0] == null) {
                    break;
                }
            }
        }catch(SQLException e) {
             e.printStackTrace();
        }finally {
            //关闭资源
            
       DBUtil.close(preparedStatement,connection);
        }
    }

    
    //主函数
    public static void main(String[] args) {
        qingXi();
        run();
    }

在数据库中把清洗好的日期格式数据导出为csv文件,把csv放入虚拟机中。

用 <hive load data local inpath '路径' into table 表名; 导入到创建好的表中。

在数据表中进行数据统计,本质就是SQL语句,完成各个题目的数据统计。

用FineBI连接hive,完成可视化操作。(FineBI使用在黑马的hadoop教程最后,具体的看FineBI文档,可以完成数据下钻和联动)

 

标签:preparedStatement,小测,String,rs,流量,10.18,hive,date,格式
From: https://www.cnblogs.com/IT2002/p/16804452.html

相关文章

  • 10.18
    [COCI2021-2022#4]Autobus题目描述在一个国家里有\(n\)座城市。这些城市由\(m\)条公交线路连接,其中第\(i\)条线路从城市\(a_i\)出发,到\(b_i\)停止,路程中耗时......
  • 2022.10.18 CSP2022 模拟赛五
    旅行路线Source:CF459E。憨憨题。按\(w\)排序后,考虑DP,设\(f_u\)表示目前在点\(u\),可以走出的最长路线。按阶段转移的时候稍微注意一下相同边权的处理,具体的,开一个......
  • 【闲话】2022.10.18
    今天中午是world.execute(me),好欸今天考试本来看完题之后就想着直接爆零得了一点思路都没有,真的要放弃了然后最后还是侥幸切了两道(我跟你说我T1结论是试出来的你......
  • 10.18
    finalshell输入showdatabases;报错HiveExceptionjava.lang.RuntimeException:Unabletoinstantiateorg.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient......
  • 10.18
    今日内容1.索引取值与迭代取值的差异2.模块简介3.模块的分类4.导入模块的两种句式5.导入模块的补充说明6.循环导入问题7.判断文件类型8.模块的查找顺序9.绝对导入......
  • 【2022.10.18】Linux入门基础(1)
    内容概要主题:linux运维(记)linux基础几乎以记忆为主(理论知识)运维的本质服务器介绍服务器品牌服务器参数服务器组件磁盘阵列虚拟化技术虚拟化软件安装虚......
  • [2022.10.18]构造器
    类中的构造器也称为构造方法,是在进行创建对象的时候必须要调用的。并且构造器有以下两个特点:1.必须和类的名字相同2.必须没有返回类型,也不能写void构造器:1.和类名相同2.......
  • SDN小测2
    1.下列哪项属于控制器的基本功能层?() 协议适配解析:协议适配的作用是根据网络实际情况,选用合适的协议优化网络;云服务属于应用服务层;交换机管理和主机管理属于网络基础......
  • python接口自动化13-流量回放
    @目录FastTester:快速生成测试用例进行测试简介流程图(设计思路)快速开始一、接口用例集合获取方式一:Fiddler方式二:mitmproxy结合以上两种方式二、执行测试方式1:流量回放,......
  • 系统分析师学习笔记(8)-图论与图示网络的最大流量
    要找出图示的最大流量:1.找出最大运量的路径,该路径的最小值为瓶颈值,抽取该值;2.在找出的路径减去抽取值,为0的路径取消;3.在剩余的路径中,找出最大的抽取值,重复步骤1&2;4.将各个步......