-
大数据框架Hive优化方法
常规调优手段
- Fetch抓取
- 某些情况查询不必用MapReduce计算,比如select*,可以直接读取文件
- 本地模式
- 有时数据量比较小,hive可以通过本地模式在单台机器上处理所有任务,对于小数据集,执行时间可以被明显缩短。
- JVM重用
- 对于大量小文件,可开启JVM重用,即多个任务共用一个JVM而不用频繁开启和关闭
- 推测执行
- 对于一些bug或者资源分配不均等情况拖后腿的MapReduce任务,会推测出这样的任务并且开启备份任务,与该任务处理同一份数据,最终选用快的那个作为结果
- 严格模式(开启后Hive自动对某些操作做一定的限制,以免过低的查询效率)
- 开启后where中必须有分区过滤条件,不允许扫描所有分区
- 使用order by 必须有limit
- 限制笛卡尔积查询
- count distinct 用 group by替换
- 空key过滤(大表join大表)
- 若空key不需要,则在join之前把空值的key过滤掉
- 如果空key需要包括在结果集里,则要把它加上一些散列数,分配到不同的reducer中防止数据倾斜
- join的时候尽量将小表放大表左边(现版本Hive对其进行自动的优化。)
数据倾斜的解决
- 开启数据倾斜时均衡负载,同一个key分道不同的reduce处理,然后开启第二个MR根据与处理数据结果再按照groupbykey分不到reduce中完成最终的聚合操
- 合理设置map、reduce个数;小文件合并等常规MR优化
- 增大map数:减少切片大小
- 增大reduce个数
- 1.设置调小每个reduce处理最大数据量/2.增大每个任务最大的reduce个数(reduce个数:N=min(参数2,总数据量/参数1))
- 直接设置set mapreduce.job.reduces = 15;
- 开启map端预先聚合,combine
- 小表存入内存,将reduce join转化为map join
- 许指定mapjoin参数为true,然后调整小表的阈值让hive自动判断小表情况进行map join转换
-
相关阅读:
转:spring-session
转:SpringBoot项目如何进行打包部署
事务的隔离级别
获取打卡记录接口返回数据情况说明
批注@SuppressWarnings 的作用
mybatis-generator eclipse插件 使用方法
几种常见数据库的driverClassName和url
ssm 配置多个数据源
常用正则表达式
tomcat 配置成服务
-
原文地址:https://www.cnblogs.com/cun-yu/p/12762784.html
Copyright © 2020-2023
润新知