hive sql 优化
来源:互联网 发布:软件项目售后服务承诺 编辑:程序博客网 时间:2024/05/29 07:13
Hive是将符合SQL语法的字符串解析生成可以在Hadoop上执行的MapReduce的工具。
使用Hive尽量按照分布式计算的一些特点来设计sql,和传统关系型数据库有区别,
所以需要去掉原有关系型数据库下开发的一些固有思维。
基本原则:
1:尽量尽早地过滤数据,减少每个阶段的数据量,对于分区表要加分区,同时只选择需要使用到的字段
select ... from A
join B
on A.key = B.key
whereA.userid>10
andB.userid<10
and A.dt='20120417'
and B.dt='20120417';
应该改写为:
select .... from(select .... from A
wheredt='201200417'
and userid>10
) a
join ( select ....from B
wheredt='201200417'
and userid < 10
)b
on a.key = b.key;
2:尽量原子化操作,尽量避免一个SQL包含复杂逻辑
可以使用中间表来完成复杂的逻辑
drop table ifexists tmp_table_1;
create table ifnot exists tmp_table_1 as
select ......;
drop table ifexists tmp_table_2;
create table ifnot exists tmp_table_2 as
select ......;
drop table ifexists result_table;
create table ifnot exists result_table as
select ......;
drop table ifexists tmp_table_1;
drop table ifexists tmp_table_2;
3:单个SQL所起的JOB个数尽量控制在5个以下
4:慎重使用mapjoin,一般行数小于2000行,大小小于1M(扩容后可以适当放大)的表才能使用,小表要注意放在join的左边(目前TCL里面很多都小表放在join的右边)。
否则会引起磁盘和内存的大量消耗
5:写SQL要先了解数据本身的特点,如果有join ,group操作的话,要注意是否会有数据倾斜
如果出现数据倾斜,应当做如下处理:
sethive.exec.reducers.max=200;
setmapred.reduce.tasks= 200;---增大Reduce个数
sethive.groupby.mapaggr.checkinterval=100000 ;--这个是group的键对应的记录条数超过这个值则会进行分拆,值根据具体数据量设置
sethive.groupby.skewindata=true; --如果是group by过程出现倾斜 应该设置为true
sethive.skewjoin.key=100000; --这个是join的键对应的记录条数超过这个值则会进行分拆,值根据具体数据量设置
sethive.optimize.skewjoin=true;--如果是join 过程出现倾斜 应该设置为true
6:如果union all的部分个数大于2,或者每个union部分数据量大,应该拆成多个insert into 语句,实际测试过程中,执行时间能提升50%
insert overwitetable tablename partition (dt= ....)
select ..... from(
select... from A
unionall
select... from B
union all
select... from C
) R
where ...;
可以改写为:
insert into tabletablename partition (dt= ....)
select .... from A
WHERE ...;
insert into tabletablename partition (dt= ....)
select .... from B
WHERE ...;
insert into tabletablename partition (dt= ....)
select .... from C
WHERE ...;- hive sql 优化
- hive sql 优化
- hive sql优化
- hive sql 优化
- hive sql优化
- hive sql优化
- Hive sql 优化介绍
- hive sql join优化
- hive-sql优化
- hive sql层面优化
- hive sql 优化
- Hive SQL的优化
- hive sql优化整理
- hive sql 优化
- Hive SQL优化
- hive sql 优化
- hive sql 优化
- Hive知识点四(sql优化)
- enable_irq_wake
- LeetCode—Sort List解题报告
- 编译Wireshark源代码
- jQueryUI的dialog的使用方法
- android 4.4 4.3 eclipse最新配置解析
- hive sql 优化
- 代理设计模式简单实例
- API设计的注意事项和流程
- cocos2d-x做圆滑曲线的动画
- JS实现网络拓扑图
- java实现链表
- socket 实现http连接
- 【九度】题目1482:玛雅人的密码
- CF:374A - Inna and Pink Pony(思想题)