hive相关知识整理

hive相关知识整理

  1. 无事事实表 就是指没有指标度量值的事实表,有多个维度外键,一般用来业务维度的关联。
  2. grouping sets函数
    (1)功能:根据给定的不同维度进行分组聚合,结果相当于挨个分组聚合然后union合并
    (2)语法:grouping sets(维度1,维度2,维度3……);
    (3)特点:语法简单,性能更好,只对表进行一次查询
    (4)场景:需要基于多种组合维度进行分析同样的指标放入一张结果表的时候
  3. grouping函数
    (1)功能:通过grouping来判断是否基于当前维度【列】实现了分组,实现过滤和判断
    (2)语法:grouping (维度1,维度2,维度3……);
    如果基于这个维度会返回0否则1
    如果有多个维度的话会返回二进制
    比如三个维度都不基于会返回 111 的十进制 7
  4. row_number函数
    (1)功能:实现计算去重
    如果按分区的字段为重复的会自动加一行row_number显示1、2、3……
    (2)语法:row_number() over(partition by 字段,字段……);
    例如:
    伪代码:
    row_number() over(partition by name,id,birthday,degree);
    
    | name | id | birthday | degree | row_number |
    | 张三 | 1001 | 2007-05-18 | 98 | 1 |
    | 张三 | 1001 | 2007-05-18 | 98 | 2 |
    | 张三 | 1001 | 2007-05-18 | 98 | 3 |
    row_number的值会自动加一
    所以可以用row_number做计算去重只取row_number为1的
  5. hive的优化:
    (1)属性优化
    ①关联优化
    ②小文件处理:合并小文件
    ③ 索引优化
    ④谓词下推:先过滤在处理
    sql优化(核心)
    ⑥设计优化:分桶表、分区表、文件存储类型 orc
    (2)数据倾斜
    ①使用分桶表
    ②开启map端聚合(规约) 减少进入reduce的个数
    ③开启参数hive.groupby.skewindata=true实现随机分区
    ④sql指定随机分区distribute by rand():将数据写入随机的分区中
    ⑤将大表转化为小表,避免走reduce join 尽量走 map join
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值