• 大数据课程L4——网站流量项目的Hive离线批处理


    文章作者邮箱:yugongshiye@sina.cn              地址:广东惠州

     ▲ 本章节目的

    ⚪ 掌握网站流量项目的 Hive 的占位符与文件的调用;

    ⚪ 掌握网站流量项目的 Hive 离线批处理过程;

    ⚪ 掌握网站流量项目的定时任务改造Hive离线处理过程;

    一、Hive 的占位符与文件的调用

    1. 概述

    对于上述的工作,我们发现需要手动去写hql语句从而完成离线数据的ETL,但每天都手动来做显然是不合适的,所以可以利用hive的文件调用与占位符来解决这个问题。

    2. Hive文件的调用

    实现步骤:

    1. 编写一个文件,后缀名为 .hive。

    比如我们现在我们创建一个01.hive文件。

    目的是在 hive的weblog数据库下,创建一个tb1表。

    01.hive 文件编写示例:

    use  weblog;

    create table tb1 (id int,name string);

    2. 进入hive安装目录的bin目录。

    执行: sh hive -f  01.hive

    注:-f  参数后跟的是01.hive文件的路径。

    3. 测试hive的表是否创建成功。

    3. Hive占位符的使用

    我们现在想通过hive执行文件,将 "tb1"这个表删除

    则我们可以这样做:

    1. 创建02.hive文件。

    02.hive 文件编写示例:

    use  weblog;

    drop table ${tb_name}

    2. 在bin目录下,执行:

    sh hive -f 02.hive -d tb_name="tb1"

    4. 结合业务的实现

    在hive最后插入数据时,涉及到一个日志的分区是以每天为单位,所以我们需要手动去写这个日期,比如 2021-05-10。

    现在,我们学习了Hive文件调用和占位符之后,我们可以这样做:

    1. 将hql语句里的日期相关的取值用占位符来表示,并写在weblog.hive文件里。

    weblog.hive 文件编写示例:

    use weblog;

    insert overwrite table tongji 

    select ${reportTime},tab1.pv,tab2.uv,tab3.vv,tab4.br,tab5.newip,tab6.newcust,tab7.avgtime,tab8.avgdeep from

    (select count(*) as pv from dataclear where reportTime = ${reportTime}) as tab1,

    (select count(distinct uvid) as uv from dataclear where reportTime = ${reportTime}) as tab2,

    (select count(distinct ssid) as vv from dataclear where reportTime = ${reportTime}) as tab3,

    (select round(br_taba.a/br_tabb.b,4)as br

  • 相关阅读:
    javaweb
    C Primer Plus(6) 中文版 第8章 字符输入/输出和输入验证 8.6 输入验证
    一文深入浅出理解国产开源木兰许可系列协议
    如何选择专业的游戏开发公司?
    软件工程,必须跨越的四大门槛
    P1006 [NOIP2008 提高组] 传纸条,棋盘型dp,路径dp
    蓝桥杯:分数
    无心剑中译狄金森《灵魂择其伴侣》
    PCL 点云超体素分割-SupervoxelClustering
    Neo4J超详细专题教程,快来收藏起来吧
  • 原文地址:https://blog.csdn.net/u013955758/article/details/132723527