• 统计分析


    有代码,配合代码 一起看
    
    3.2 使用MapReduce对数据进行清洗,把原始数据清洗后,放到hdfs的/hmbbs_cleaned目录下,每天产生一个子目录。    
    3.3 使用hive对清洗后的数据进行统计,如何处理?如下:
    3.3.1 建立一个外部分区表,脚本如下(为什么是外部的,因为我们清洗后的数据放到/hmbbs_cleaned下,2分左右,再仔细看,回头看看分区别是什么,然后在来体会一下。)
        CREATE EXTERNAL TABLE hmbbs(ip string, atime string, url string) PARTITIONED BY (logdate string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '	' LOCATION '/hmbbs_cleaned';
    3.3.2 增加分区,脚本如下
        ALTER TABLE hmbbs ADD PARTITION(logdate='2013_05_30') LOCATION '/hmbbs_cleaned/2013_05_30';
        上面这个命令应该放到脚本中。原因:Hive中的每个分区,对应数据库文件夹下的一个子文件夹,在创建表的时候,可以看出,我们是按时间进行分区的,而且我们的日志是每天产生一次,所以我们每天都要创建一个分区,所以每天会产生一个分区的目录,该目录中放了我们清洗后的文件,那么每天都需要加一个分区。自然就要每天执行一次这个语句。
        把代码增加到upload_to_hdfs.sh中,内容如下
        hive -e "ALTER TABLE hmbbs ADD PARTITION(logdate='${yesterday}') LOCATION '/hmbbs_cleaned/${yesterday}';"
            hive -e的意思是在hive环境之外执行hive命令,我们之前执行的命令时,最开始都执行一个hive命令,此时进入了hive的终端(命令行),
            然后执行语句,但是如果我们执行quit命令,退出hive终端,再执行上述命令,是不可以的,需要加上hive -e+命令,命令需要用引号括起来。
    
    3.3.3 统计每日的pv,代码如下
          CREATE TABLE hmbbs_pv_2013_05_30 AS SELECT COUNT(1) AS PV FROM hmbbs WHERE logdate='2013_05_30';
          统计每日的注册用户数,代码如下
          CREATE TABLE hmbbs_reguser_2013_05_30 AS SELECT COUNT(1) AS REGUSER FROM hmbbs WHERE logdate='2013_05_30' AND INSTR(url,'member.php?mod=register')>0;
          统计每日的独立ip,代码如下
          CREATE TABLE hmbbs_ip_2013_05_30 AS SELECT COUNT(DISTINCT ip) AS IP FROM hmbbs WHERE logdate='2013_05_30';
          统计每日的跳出用户,代码如下
          CREATE TABLE hmbbs_jumper_2013_05_30 AS SELECT COUNT(1) AS jumper FROM (SELECT COUNT(ip) AS times FROM hmbbs WHERE logdate='2013_05_30' GROUP BY ip HAVING times=1) e;
          把每天统计的数据放入一张表(其实不合并,也可以,不过用SQOOP导出的时候,mysql那里也需要有4个表去接收)
                         (我们既然都用了selecet语句了,应该就会产生数据了,为什么非要创建一个表,因为sqoop导出的只能是表目录,你给他一个select语句,他搞不明白。) 
          CREATE TABLE hmbbs_2013_05_30 AS SELECT '2013_05_30', a.pv, b.reguser, c.ip, d.jumper FROM hmbbs_pv_2013_05_30 a JOIN hmbbs_reguser_2013_05_30 b ON 1=1 JOIN hmbbs_ip_2013_05_30 c ON 1=1 JOIN hmbbs_jumper_2013_05_30 d ON 1=1 ;
    创建如上4个表的目的就是要把这四个hive表中的数据导入到mysql中。
    3.4 使用sqoop把数据导出到mysql中(需要创建数据库,并且创建需要导出到的那张表)                                    默认分隔符(分割列的)   这个目录应该是hdfs中的,因为我们hive创建的表是放在hdfs中,也就是说,我们通过表连接合并成一个表之后,这个表存放在hdfs中的位置的地址
        sqoop export --connect jdbc:mysql://hadoop0:3306/hmbbs --username root --password admin --table hmbbs_logs_stat --fields-terminated-by '01' --export-dir /usr/hive/warehouse/hmbbs_2013_05_30
    
    3.5完善执行的批量脚本
    3.5.1初始化数据(对历史数据进行处理)
    3.5.2每日执行的脚本(就是把历史数据执行完了,然后对每天产生的文件进行处理)
    
    hive删除表命令 drop table 表名
    查看hive中的函数 进入hive  执行 show function命令
    查看某一个函数的具体信息  discribe function 函数名   
  • 相关阅读:
    wordpress调用函数大全
    Dedecms 数据库结构分析
    屏幕广播的实现(二)
    屏幕广播的实现(一)
    Alt+Ctrl+Del组合键的屏蔽
    关于钩子(HOOK)
    C# 线程入门 00
    C# 中 关键字 return break continue 详解
    Windows 网络命令
    vue自定义指令封装(加深印象)
  • 原文地址:https://www.cnblogs.com/mrxiaohe/p/5274339.html
Copyright © 2020-2023  润新知