栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 云计算 > 云平台

hive高级篇-企业级调优

云平台 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

hive高级篇-企业级调优

hive高级篇-企业级调优

文章目录
  • hive高级篇-企业级调优
  • 前言
  • 一、设置分区
  • 二、hql语句调优
    • 2.1 避免全表扫描
    • 2.2 GroupBy
    • 2.3 Vectorization
    • 2.4 多重模式
    • 2.5 in/exist
    • 2.6 CBO
    • 2.7 Mapjoin
    • 2.8 SMB Join
    • 2.9开启严格模式
  • 3.数据倾斜
    • 3.1 key
    • 3.2 mapjoin
  • 4.job优化
    • 4.1 map
    • 4.2 reduce
    • 4.3不走mr
    • 4.4jvm复用


前言

大家基础的hive已经学完,发现hive启用的mr框架,如果没有设置好执行计划或者对map语句进行合理的设置,那么会导致语句执行的速度过于缓慢,所以很有必要对hive调优进行学习了解

一、设置分区

静态分区时可以使用insert load。
动态分区只能使用insert。

二、hql语句调优 2.1 避免全表扫描

只选择需要的列和分区

2.2 GroupBy

set hive.map.aggr = true;
set hive.groupby.mapaggr.checkinterval = 100000;
set hive.groupby.skewindata = true; //有数据倾斜时开启负载均衡
开启两个mr 先进行预聚合

2.3 Vectorization

在进行scan filter aggregation开启批量扫描

2.4 多重模式

如果对一张表进行多此的扫描 那么可以先from

2.5 in/exist

left semi join替换in exist,因为这种语法不被支持

2.6 CBO

CBO优化是对执行计划进行筛选,选择最优计划进行执行
包含了谓词下推 比如先执行where进行数据的筛选再执行join操作

2.7 Mapjoin

inner join有效 把小表进行广播

2.8 SMB Join

两张大表进行分桶
set hive.optimize.bucketmapjoin = true;
set hive.optimize.bucketmapjoin.sortedmerge = true; set
hive.input.format=org.apache.hadoop.hive.ql.io.BucketizedHiveInputFormat 再
进行join

2.9开启严格模式

禁止笛卡尔积和全表扫描

3.数据倾斜 3.1 key

单个和多个key导致的数据倾斜可以开启预聚合 或者增加key的数量,不要倍数的增加。(对单个key无效)

3.2 mapjoin

因为没有了join阶段

4.job优化 4.1 map

增加map数 合并小文件 开启combine合并小文件

4.2 reduce

增加reduce数量 开启并型模式

4.3不走mr

fetch模式
local模式

4.4jvm复用
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/897159.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号