- mapjoin:默认打开
- 行列技术:join where => where + join
- 采用分区
- 列存储(加快查询速度)
- 压缩(减少磁盘IO)
- 合理设置map个数
块大小:max(1, min(快大小,Long的最大值))
块大小一般设置128m数据 =》1个maptask - distribute by rand(),将数据随机分区,保证每个分区的数据流基本一致
- 合理设置reduce个数;可以根据数据量适当增加reduce个数;
- 小文件如何产生?
- 动态分区
- reduce个数设置的过多;分区的key设置的不合理
- 输入源本身就是小文件
- 解决小文件问题
- combinehiveInputformat 合并
- 开启JVM重用
- merge 如果是maponly任务,默认功能打开
执行完任务,产生小文件,再开启一个作业,这个作业负责将默认小于16m的文件进行合并,默认合并到256m - 如果是mr任务。merge功能需要打开
- 在map阶段开启combiner
set hive.map.aggr = true - 替换引擎
- mr引擎:基于磁盘; 速度慢 跨天,数据量比较大的场景
- tez引擎:基于内存; 速度快 数据量比较小,临时测试,验证
- spark引擎:基于磁盘 + 内存 速度较快 当天的定时任务