hive优化
2014-07-28 11:42
204 查看
1、列裁剪
select a,b from t where e < 10;
设置参数:
hive.optimize.cp = true
2、分区裁剪
select * from (
select c1,count(1) from t group by c1
) subq
where subq.prtn = 100;
select * from T1 join(
select * from t2
) subq on (t1.c1=subq.c2)
where subq.prtn = 100;
设置参数:
hive.optimize,pruner = true
3、join操作
原则:将条目少的表、子查询放在join操作的左边,原因reduce端join时,join左边的表会被加载到内存中,有效减少内存溢出。
insert overwrite table pv_users
select pv.pageid,u.age from page_view pv
join user u on (pv.userid = u.userid)
join newuser x on (pv.userid = x.userid);
如果join的key一样,可以优化为一个mapreduce处理
4、map join 操作
map join无需reduce就可以在map阶段全部完成,前提是在map过程中可以访问到全部需要的数据
insert overwrite table pv_users
select /*+ MAPJOIN(pv) */ pv.pageid,u.age
from page_view pv join user u on (pv.userid = u.userid);
设置参数:
hive.join.emit.interl = 1000
hive.mapjoin.size.key = 10000
hive.mapjoin.cache.numrows = 10000
hive.join.emit.interl = 1000
5、group by
1/map端部分聚合
hive.map.aggr = true
hive.groupby.mapaggr.checkinterval = 10000设定mapper进行聚合的记录数
2、数据倾斜时进行负载均衡
hive.groupby.skewindata = true
生成两个mapreduce,
第一个MR,map输出的数据随机分布到reduce进行部分聚合,达到负载均衡
第二个MR,按照group by key分布到reduce中
6、合并小文件
hive.merge.mapfiles = true
hive.merge.mapredfiles = true
hive.merge.size.per.task = 256*1000*1000
select a,b from t where e < 10;
设置参数:
hive.optimize.cp = true
2、分区裁剪
select * from (
select c1,count(1) from t group by c1
) subq
where subq.prtn = 100;
select * from T1 join(
select * from t2
) subq on (t1.c1=subq.c2)
where subq.prtn = 100;
设置参数:
hive.optimize,pruner = true
3、join操作
原则:将条目少的表、子查询放在join操作的左边,原因reduce端join时,join左边的表会被加载到内存中,有效减少内存溢出。
insert overwrite table pv_users
select pv.pageid,u.age from page_view pv
join user u on (pv.userid = u.userid)
join newuser x on (pv.userid = x.userid);
如果join的key一样,可以优化为一个mapreduce处理
4、map join 操作
map join无需reduce就可以在map阶段全部完成,前提是在map过程中可以访问到全部需要的数据
insert overwrite table pv_users
select /*+ MAPJOIN(pv) */ pv.pageid,u.age
from page_view pv join user u on (pv.userid = u.userid);
设置参数:
hive.join.emit.interl = 1000
hive.mapjoin.size.key = 10000
hive.mapjoin.cache.numrows = 10000
hive.join.emit.interl = 1000
5、group by
1/map端部分聚合
hive.map.aggr = true
hive.groupby.mapaggr.checkinterval = 10000设定mapper进行聚合的记录数
2、数据倾斜时进行负载均衡
hive.groupby.skewindata = true
生成两个mapreduce,
第一个MR,map输出的数据随机分布到reduce进行部分聚合,达到负载均衡
第二个MR,按照group by key分布到reduce中
6、合并小文件
hive.merge.mapfiles = true
hive.merge.mapredfiles = true
hive.merge.size.per.task = 256*1000*1000
相关文章推荐
- Hive优化----系统评估reduce数为1的MR Job优化
- 深入浅出数据仓库中SQL性能优化之Hive篇
- Hive优化_1. 数据文件优化篇
- hive sql 优化 数据倾斜
- 深入浅出Hive企业级架构优化、Hive Sql优化、压缩和分布式缓存(企业Hadoop应用核心产品)
- Hive MapJoin 优化
- Hive map阶段优化之一次详细的优化分析过程
- 收集hive优化解决方案
- hive优化的几篇博文
- 深入浅出Hive企业级架构优化视频教程
- hive优化之-控制hive任务中的map数和reduce数
- Hive优化---启用local模式
- hive的查询注意事项以及优化总结 .
- Hive 通过关闭CBO (Cost based Optimizer) 来优化特定的SQL执行
- hive优化之------控制hive任务中的map数和reduce数
- hive MapJoin优化
- hive优化方式和使用技巧
- Hive优化
- hive 优化的原则
- Hive sql 优化介绍