Hive 笔记

时间:2021-09-29 15:11:08
  1. DESCRIBE EXTENDED mydb.employees  DESCRIBE EXTENDED mydb.employees DESCRIBE EXTENDED mydb.employees
  2. hive> SHOW PARTITIONS employees;   SHOW PARTITIONS command

  3. Hive : select from group by : group by 对聚合操作之外的字段使用. 先是 from group by 执行后, 才执行select操作.

  4. Hive 数据库时间转换: tbl_pv_hour.time字段, 格式是

    20141019 10:40:01

    20141019 10:51:25

    20141019 10:51:02

    20141019 10:42:03

    20141019 10:41:47

    转换成 基准时间是unix_timestamp(time,'yyyyMMdd HH:mm:ss'), 时间格式字符串不可少.

    select unix_timestamp(time,'yyyyMMdd HH:mm:ss') from tbl_pv_hour where dt="20141019" limit 5;

  5. GROUP BY : 分组, 将同一个 字段的同一个值, 聚合为一组. 组中是一个关键字的多条记录.

    在此基础上, 再使用聚合函数:max() \ min() \ sum() 等, 则会在一个 关键字值 对应的 分组中 找到 最大(max()) 最小(min()) 的一条记录, 即实现了去重.​

    示例:

    INSERT INTO TABLE default.general_details_day_gaozs

        SELECT letv_cookie,max(ip),max(country),max(area),max(province),max(city),max(nettype),max(os),

            max(os_version),p1,p2,max(p3),max(app),max(brand),max(terminal_id),max(resolution),max(browser),max(fake)

        FROM data_raw.tbl_env_hour

        WHERE dt=${datetime} and product=1

        GROUP BY letv_cookie,p1,p2

    其中  GROUP BY letv_cookie,p1,p2 将数据分组, max()将分组中最大值取出, 完成去重. 语句中不出现distinct, 没用.

  6. 好的