hivesql的调优一般是基于sql的执行顺序(from> join> on> where> group by >having >select >distinct >order by >limit)做优化处理的,最大可能的缩小单表查询范围
1)MapJoin
如果不指定MapJoin或者不符合MapJoin的条件,那么Hive解析器会将Join操作转换成Common Join,即:在Reduce阶段完成join。容易发生数据倾斜。可以用MapJoin把小表全部加载到内存在map端进行join,避免reducer处理。
2)行列过滤
列处理:在SELECT中,只拿需要的列,如果有,尽量使用分区过滤,少用SELECT *。
行处理:在分区剪裁中,当使用外关联时,如果将副表的过滤条件写在Where后面,那么就会先全表关联,之后再过滤。
3)列式存储
4)采用分区技术
5)合理设置Map数
mapred.min.split.size: 指的是数据的最小分割单元大小;min的默认值是1B
mapred.max.split.size: 指的是数据的最大分割单元大小;max的默认值是256MB
通过调整max可以起到调整map数的作用,减小max可以增加map数,增大max可以减少map数。
需要提醒的是,直接调整mapred.map.tasks这个参数是没有效果的。
6)合理设置Reduce数
Reduce个数并不是越多越好
(1)过多的启动和初始化Reduce也会消耗时间和资源;
(2)另外,有多少个Reduce,就会有多少个输出文件,如果生成了很多个小文件,那么如果这些小文件作为下一个任务的输入,则也会出现小文件过多的问题;
在设置Reduce个数的时候也需要考虑这两个原则:处理大数据量利用合适的Reduce数;使单个Reduce任务处理数据量大小要合适;
7)小文件如何产生的?
(1)动态分区插入数据,产生大量的小文件,从而导致map数量剧增;
(2)reduce数量越多,小文件也越多(reduce的个数和输出文件是对应的);
(3)数据源本身就包含大量的小文件。
8)小文件解决方案
(1)在Map执行前合并小文件,减少Map数:CombineHiveInputFormat具有对小文件进行合并的功能(系统默认的格式)。HiveInputFormat没有对小文件合并功能。
(2)merge
// 输出合并小文件
SET hive.merge.mapfiles = true; – 默认true,在map-only任务结束时合并小文件
SET hive.merge.mapredfiles = true; – 默认false,在map-reduce任务结束时合并小文件
SET hive.merge.size.per.task = 268435456; – 默认256M
SET hive.merge.smallfiles.avgsize = 16777216; – 当输出文件的平均大小小于16m该值时,启动一个独立的map-reduce任务进行文件merge
(3)开启JVM重用
set mapreduce.job.jvm.numtasks=10
9)开启map端combiner(不影响最终业务逻辑)
set hive.map.aggr=true;
10)压缩(选择快的)
设置map端输出、中间结果压缩。(不完全是解决数据倾斜的问题,但是减少了IO读写和网络传输,能提高很多效率)
set hive.exec.compress.intermediate=true --启用中间数据压缩
set mapreduce.map.output.compress=true --启用最终数据压缩
set mapreduce.map.outout.compress.codec=…; --设置压缩方式
11)采用tez引擎或者spark引擎

hive-sql调优相关推荐

  1. Hive SQL调优

    1.背景 目前数据存在的问题 1.用户使用场景集中在上班高峰时间 2.SQL质量需要调整/调优 2.目标 总结通用的SQL优化方式进行推广 3.优化方式 目前hive版本2.3.5,执行引擎是Tez ...

  2. Hive性能调优实战 分享

    获取方式 链接:https://pan.baidu.com/s/1TmkWssL1K45af7GDrj2QWw 提取码:26uv 关注我的公众号[宝哥大数据],更多干货 目录 第1章 举例感受Hive ...

  3. 3万字史诗级 Hive 性能调优(建议收藏)

    前言 Hive 作为大数据领域常用的数据仓库组件,在平时设计和查询的时候要特别注意效率 .影响 Hive 效率的几乎从不是数据量过大,而是数据倾斜.数据冗余.Job或I/O过多.MapReduce 分 ...

  4. Mysql高级调优篇——第五章:Sql调优在面试中深度剖析

    上节讲了Sql调优实战,本章聊聊面试中Sql调优深度的剖析场景! 在讲之前我们先做一些准备工作,建立一些需要用到的表: Mysql高级调优篇表补充--建表SQL_风清扬逍遥子的博客-CSDN博客⭐️t ...

  5. 读《程序员的SQL金典》[4]--SQL调优

    一.SQL注入 如果程序中采用sql拼接的方式书写代码,那么很可能存在SQL注入漏洞.避免的方式有两种: 1. 对于用户输入过滤敏感字母: 2. 参数化SQL(推荐). 二.索引 ①索引分类 聚簇索引 ...

  6. sql优化的方法及思路_合理的sql优化思路--如何缩短SQL调优时间?

    概述 当生产环境发生故障或者系统特别慢的时候,这时候你从awr报告拿到有问题的sql,但是优化的时候却优化了很久还没解决,这时候在领导或者客户面前就不太好了...那么我们怎么去缩短sql调优的时间,一 ...

  7. MySQL 索引和 SQL 调优手册

    MySQL索引 MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等.为了避免混乱,本文将只关注于BTree ...

  8. MySQL索引和SQL调优手册

    MySQL索引 MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等. 为了避免混乱,本文将只关注于BTre ...

  9. 11g新特性-自动sql调优(Automatic SQL Tuning)

    11g新特性-自动sql调优(Automatic SQL Tuning) 在Oracle 10g中,引进了自动sql调优特性.此外,ADDM也会监控捕获高负载的sql语句. 在Oracle 11g中, ...

  10. Mysql排序添加名词_记面试中问到的MySQL的SQL调优问题

    目录 1.场景还原 2.名词解释 3.实践情况 4.个人观点 5.引申问题 1.场景还原 面试官:小伙子,听说你会SQL调优,那我这里有一条SQL,你来帮我调优一下.SQL如下: SELECT * F ...

最新文章

  1. 多线程利器-队列(queue)
  2. java 语法 冒号_java中生僻的冒号跳转语法
  3. python与机械教育初探_Python公开课-机械学习之手写识别
  4. 使用JSON的RESTful云数据库
  5. huffman编码的程序流程图_基于哈夫曼编码的压缩解压程序(C 语言)
  6. emoji 表情图片解决方法
  7. 湖北省211大学计算机分数线,武汉7所211大学湖北省录取分数线2020
  8. 洛谷【P1195】口袋的天空
  9. Android系统各个版本发布时间
  10. 10道虐心的Java面试题,被面试官虐哭了,同事一题都没答对
  11. 5g网站服务器宽带,别装有线宽带了,5G以后,有线宽带将被淘汰
  12. 信息论小课堂:纠错码(海明码在信息传输编码时,通过巧妙的信道编码保证有了错误能够自动纠错。)
  13. 2022-2027年中国聚丁烯管市场竞争态势及行业投资前景预测报告
  14. JCG836pro路由器刷入breed
  15. E01-前端整合:【案例】添加数据页面
  16. linux系统内存管理含义,Linux内存管理--基本概念及相关数据结构
  17. 点点鼠标在线绘制GO/KEGG富集分析泡泡图
  18. OriginPro,如何把软件Origin切换变成中文显示
  19. html里div水平居中,html+css div水平居中的几种方法
  20. 软件开发工程师工作总结

热门文章

  1. 漫话:如何给女朋友解释什么是编译与反编译
  2. 采用用计算机及条形码技术的是什么,条码技术在计算机应用与实践
  3. 基于JSP的网上宠物销售商城
  4. css动画-小球撞壁反弹
  5. java int 无穷小_JAVA中令人眼花撩乱的数字魔法
  6. 计算机视觉技术在水果分级中的应用,计算机视觉技术在水果分级处理中的应用概况及发展...
  7. 新人请教 R语言作业
  8. 软件工程期末报告(登录注册部分)
  9. jQuery基础之实现动画效果
  10. note3 android l,从192MB到3GB Android手机内存发展回顾