Hive调优
来源:互联网 发布:2016最新赚钱网络手游 编辑:程序博客网 时间:2024/06/04 11:20
1. join连接时的优化:当三个或多个以上的表进行join操作时,如果每个on使用相同的字段连接时只会产生一个mapreduce。
当多个表进行查询时,从左到右表的大小顺序应该是从小到大。原因:hive在对每行记录操作时会把其他表先缓存起来,直到扫 描最后的表进行计算。
2. 用order by代替distinct,后者会导致reducer变成一个,导致效率低下。
3. 在where字句中增加分区过滤器。
4. 当可以使用left semi join 语法时不要使用inner join,前者效率更高。原因:对于左表中指定的一条记录,一旦在右表中找到立即停止扫描。
5. 如果所有表中有一张表足够小,则可置于内存中,这样在和其他表进行连接的时候就能完成匹配,省略掉reduce过程。设置属性即可实现,set hive.auto.covert.join=true; 用户可以配置希望被优化的小表的大小 set hive.mapjoin.smalltable.size=2500000; 如果需要使用这两个配置可置入$HOME/.hiverc文件中。
6. 同一种数据的多种处理:从一个数据源产生的多个数据聚合,无需每次聚合都需要重新扫描一次。
例如:insert overwrite table student select * from employee; insert overwrite table person select * from employee;
可以优化成:from employee insert overwrite table student select * insert overwrite table person select *
7. limit调优:limit语句通常是执行整个语句后返回部分结果。set hive.limit.optimize.enable=true;
8. 开启并发执行。某个job任务中可能包含众多的阶段,其中某些阶段没有依赖关系可以并发执行,开启并发执行后job任务可以更快的完成。设置属性:set hive.exec.parallel=true;
9. hive提供的严格模式,禁止3种情况下的查询模式。
a:当表为分区表时,where字句后没有分区字段和限制时,不允许执行。
b:当使用order by语句时,必须使用limit字段,因为order by 只会产生一个reduce任务。
c:限制笛卡尔积的查询。
10. 合理的设置map和reduce数量。
11. jvm重用。可在hadoop的mapred-site.xml中设置jvm被重用的次数
- hive 调优
- hive调优
- Hive调优
- Hive调优
- Hive 调优
- hive调优
- Hive调优
- hive调优
- hive 调优
- hive调优
- hive调优
- Hive调优
- [Hive]Hive调优:让任务并行执行
- hive 性能 调优、优化
- Hive Setting调优
- hive调优 ------- 竖表变横表
- hive 调优 总结大全
- hive mapreduce reducer 调优
- VTK修炼之道59:图形基本操作进阶_纹理映射
- UVA1610:Party Games(聚会游戏)
- Tensorflow.org不能访问的处理
- 内部排序之选择排序:简单选择排序,堆排序
- 单例模式--确保一个类只有一个实例,并提供一个全局访问点。
- Hive调优
- Java线程状态
- [置顶] 中文翻译 for S5PV210_iROM
- 一个简单的python数字锁相环
- CentOS7开机报错piix4_smbus ****host smbus controller not enabled
- leetcode算法题(JavaScript实现)
- MSSQL 事务的使用
- PHP脚本无法传递POST变量的解决方式
- 数据库复习