版权归原作者所有 学 it 技术就来三通 it 学院 www.santongit.com
更多内容在‘
java
私塾官网’
Java 私塾 Hive QL 详解
第一部分:Hadoop 计算框架的特性
什么是数据倾斜
•由于数据的不均衡原因,导致数据分布不均匀,造成数据大量的集中到一点,造成数据热点
Hadoop 框架的特性
•不怕数据大,怕数据倾斜
•jobs 数比较多的作业运行效率相对比较低,比如即使有几百行的表,如果多次关联多次汇总,产生十几个 jobs,耗时
很长。原因是 map reduce 作业初始化的时间是比较长的
•sum,count,max,min 等 UDAF,不怕数据倾斜问题,hadoop 在 map 端的汇总合并优化,使数据倾斜不成问题
•count(distinct ),在数据量大的情况下,效率较低,因为 count(distinct)是按 group by 字段分组,按 distinct 字
段排序,一般这种分布方式是很倾斜的
第二部分:优化的常用手段
优化的常用手段
•解决数据倾斜问题
•减少 job 数
•设置合理的 map reduce 的 task 数,能有效提升性能。
•了解数据分布,自己动手解决数据倾斜问题是个不错的选择
•数据量较大的情况下,慎用 count(distinct)。
•对小文件进行合并,是行至有效的提高调度效率的方法。
•优化时把握整体,单个作业最优不如整体最优。
第三部分:Hive 的数据类型方面的优化
优化原则
•按照一定规则分区(例如根据日期)。通过分区,查询的时候指定分区,会大大减少在无用数据上的扫描, 同时也非常
方便数据清理。
•合理的设置 Buckets。在一些大数据 join 的情况下,map join 有时候会内存不够。如果使用 Bucket Map Join 的话,
可以只把其中的一个 bucket 放到内存中,内存中原来放不下的内存表就变得可以放下。这需要使用 buckets 的键进行
join 的条件连结,并且需要如下设置
set hive.optimize.bucketmapjoin = true
第四部分:Hive 的操作方面的优化
•全排序
•怎样做笛卡尔积
•怎样决定 map 个数
•怎样决定 reducer 个数
•合并 MapReduce 操作
•Bucket 与 sampling
•Partition
•JOIN
•Group By
•合并小文件
全排序
•Hive 的排序关键字是 SORT BY,它有意区别于传统数据库的 ORDER BY 也是为了强调两者的区别–SORT BY 只能
在单机范围内排序
评论0
最新资源