Hive_知识点

Hive 组成

  1. 元数据:描述数据的数据
  2. 内部执行流程 : 
  3. 解析器(解析器SQL语句)
  4. 编译器(把SQL语句编译成MapReduce程序)
  5. 优化器(优化MapRedue程序)
  6. 执行器(将MapReduce程序运行的结果提交到HDFS)
  7. 处理引擎 MR:MapReduce

Hive 与 Mysql 的区别

  1. 除了语法接近 ,其他都不一样
  2. 数据量 : 数据量越大  Hive 优势大 ,数据量小,mysql 
  3. 速度:数据量越大 Hive越快,数据量小  mysql 越快
  4. 查询:Hive 海量数据查询,mysql 小数据量的增删改查

内部表 与 外部表的 区别

  1. 未被external修饰的是内部表(managed table),被external修饰的为外部表(external table)
  2. 删除内部表   会直接删除元数据(metadata)及存储数据
  3. 删除外部表   仅仅会删除元数据,HDFS上的文件并不会被删除;
  4. 对内部表的修改会将修改直接同步给元数据,而对外部表的表结构和分区进行修改,则需要修复(MSCK REPAIR TABLE table_name;)
  5. 怎么使用????
  6. 只有自己临时使用的 创建内部表,绝大多数场景都是外部表。

4个By

  1. order by :全局排序  把所有数据汇总到一个 mr 进行排序,导致 数据倾斜 ,一般情况下很少使用

  2. sort by  : 排序 

  3. distribute by   : 分区           分区  加 排序

  4. Cluster by

order  By(全局排序) :一个reducer,执行一个job。Total Job=1,可以在运行日志中看到:number of reucers=1.用在select语句的后面。

sort By(分区内排序):每个reducer内部进行排序,对全局结果集来说不是排序。随机分区,防止数据倾斜。①设置reduce个数。set mapreduce.job.reducers=3;②查看reduce个数。set mapreduce.job.reducers;

distribute By(分区排序):类似于map中的partition,进行分区,结合sort By使用,使用时多配置reduce进行处理。

cluster By():当distribute By 和sort By字段相同时,可以使用cluster By的形式。排序只能倒序排序,不可指定

系统函数

  1. 日期函数,时间:日、周、月
  2. date_add 、date_sub、next_day、 last_day、get_json_object  

自定义函数

  1. UDF(User-Defined-Function) 一进一出    : 一行进来 一行出去
  2. 定义类  继承UDF,重写 evaluate 方法 
  3. UDAF(User-Defined Aggregation Function) >>聚合函数,多进一处
  4. UDTF(User-Defined Table-Generating Functions) >>一进多出
  5. 定义类   继承 G....UDTF ,重写里面三个 方面 ,初始化(定义返回值名称,校验返回值类型)、close、process
  6. 打包  上传HDFS=》 在 hive 客户端创建 ,重换 jar 直接替换掉

窗口函数

  1. rank 
  2. over  
  3. topn

优化

  1. mapjoin   默认打开 不要关闭
  2. 行列过滤   join  where   ==》 where   子查询   join
  3. 采用分区 : 每天一分区 
  4. 分桶 : 对数据量不太清楚的前提下,进行join后 会有数据倾斜的 风险,所以我们先分桶采样 将 key 打散   解决数据倾斜
  5. 小文件 :CombineHiveInpuformat   计算任务的时候将小文件合并到一起 统一切片
  6. Jvm 重用 
  7. merge   合并:如果是maponly 任务 默认打开,实现功能为  如果产生了超过16mb的小文件 他会将这些小文件开始合并为  256mb 的一个文件
  8. 如果是MapReduce 任务 ,如果会产生小文件,需要把这个功能打开
  9. 压缩 : map    snappy        reduce   的中间位置  设置 snappy 压缩  提高传输效率
  10. 采用 列式 存储 
  11. 查询时 : select name  from  u    查询某列  提速快
  12. 在  map阶段  提前进行 Combiner    前提条件是 不影响业务逻辑
  13. 可以换 引擎   : hive 底层引擎默认采用  mr  , mr 是基于磁盘的,计算速度相对讲慢, 那么我们可以换为 tez,spark  这种 基于内存计算的  引擎 ,这样就会 快很多 。

数据倾斜

  1. 帖子: http://www.jianshu.com/p/2181e00d74dc
  2. 类型导致 数据倾斜

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

睡覺了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值