Hive优化(或者面试问你工作中遇到的问题就可以答hive优化)

  1. select * 是不走MR程序的
  2. 可以开启本地模式local(当文件小于默认128M且文件数少于4个,不走MR)
  3. 表的优化
    (1) 小表 join 大表
    将key相对分散,并且数据量小的表放在jon左边,这样可以有效减少内存溢出(OOM)错误发生几率;在进一步可以开启MapJoin让小维度的表先进入内存,在map端完成reduce(注:现在用的hive版本本身已经进行了优化,所以小表放在前或者后没有明显区别)
    (2)大表 Join 大表
    1.空key过滤(一般数据清洗已经被过滤掉了,脏数据需要进行过滤)
    2.空key转换
    有时某个key为空,但是并不是异常数据,此时可以给空key字段赋一个随机值,使数据随机均匀地分布在reduce上(要不然空key数据会都被分配到一个reduce里,造成数据倾斜)
  4. MapJoin(默认是开启的)(小表join大表时使用,可以有效提高效率)
    内存足够大可以把阈值调大(默认25M以下认为是小表)
    set hive.mapjoin.smalltable.filesize = ?;
    MapJoin工作机制:join机制在map阶段完成,把小表全部加载到内存在map端进行join,避免reduce处理。
  5. Group By
    (1) (默认情况,map阶段同一key数据分发给一个reduce,当一个key数据过大时就会发生数据倾斜)
    (2) 并不是聚合操作都要在reduce完成,也可以开启map端进行预聚合(combiner)(默认是开启的)
    (3)在发现有数据倾斜的时候可以打开负载均衡(默认是false)
    hive.groupby.skewindata = true;(确定存在数据倾斜时打开)
    开启后会生出两个MRJob,第一个job中,map的输出结果会随机分布到reduce中,每个reduce做部分聚合,并输出结果;第二个Job再根据预处理的结果按照group by key分布到reduce中,最后完成最终聚合。
  6. count(distinct) 去重统计(尽量不用,用groupby来代替)
    先group by 再count,避免oom或者数据倾斜
    只有一个reducer在进行count(distinct)的计算
  7. 尽量避免使用笛卡尔积,join的时候不加on条件或者无效on,hive只能使用1个reduce来完成笛卡尔积(生产环境中会关闭掉笛卡尔积 [会设置成严格模式])
  8. 行列过滤
    (1)列处理:少用select *
    (2)行处理:当使用外关联时,如果将副表过滤,条件写在where后面,那么就会全表关联,之后在过滤,那么副表就要先子查询在进行join。
  9. 动态分区调整(根据分区字段进行分区):需要配置参数,最大分区数、每个reduce分区数等参数。根据字段的不同个数来进行设定,每个reduce分区数少于不同字段个数会报错。
    10.MR优化
    (1)合理设置map数
    (2)合理设置reduce数
    (3)并行执行
    设置参数hive.exec.parallel = true;
    hive会将一个查询转换成一个或多个阶段,阶段可以是MR、抽样阶段、合并阶段、limit阶段。多个阶段并行度越高,job完成越快。
    (4)严格模式(严格模式下,笛卡尔积不被允许,分区表未指定分区不被允许等),在生成环境中是开启的,默认是false。

Hive优化(再一遍系统复习)相关推荐

  1. 新来的同事把公司现有项目的性能优化了一遍,来看看他是怎么做到的

    公司新来了个同事,级别比我高一级,技术一流,来了之后把现有项目的性能优化了一遍,给公司省了不少成本. 后来才知道,他竟然是个「把烂牌打出王炸」的存在.他叫老徐,我希望通过他的故事,帮你找到些可复制的方 ...

  2. CC00027.hadoop——|HadoopHive.V27|——|Hive.v27|Hive优化策略|实战.v03|

    一.SQL优化 ### --- SQL优化~~~ 列裁剪和分区裁剪 ~~~ 列裁剪是在查询时只读取需要的列:分区裁剪就是只读取需要的分区. ~~~ 简单的说:select 中不要有多余的列,坚决避免 ...

  3. 求求你!别再考秒杀系统了!看完这篇怼回去 ~

    程序员的成长之路 互联网/程序员/技术/资料共享 关注 阅读本文大概需要 25 分钟. 来自:my.oschina.net/xianggao/blog/524943 我们都知道,某厂是最擅长搞秒杀系统 ...

  4. Hive优化方法汇总

    Hive优化方法: 1.Fetch抓取 2.本地模式 3.表的优化 (1)小表大表Join(MapJoin) (2)大表Join大表 (3)Group By (4)Count(Distinct)去重统 ...

  5. Hive优化的基本思路

    一.开头 好好理解Map-Reduce过程,多看看执行计划[explain 查询语句],就会更帮帮地理解咯 二.Hive-SQL语句转化成MapReduce 1)Join的实现原理 select u. ...

  6. hive优化大全-一篇就够了

    1.概述 在工作中总结Hive的常用优化手段和在工作中使用Hive出现的问题.下面开始本篇文章的优化介绍. 2.介绍 首先,我们来看看Hadoop的计算框架特性,在此特性下会衍生哪些问题? 数据量大不 ...

  7. hive 行转列和列转行的方法_读离线和实时大数据开发实战,为你揭开 Hive 优化实践的神秘面纱...

    前言 「1024,1GB,一级棒!程序仔们节日快乐!」 ❝ 指尖流动的 1024 行代码,到底是什么? ❞ ❝ 是10行的迷茫?是101行的叛逆?是202行的理性思考?是307行对渴望的冲动?还是40 ...

  8. 深入浅出学Hive:Hive优化

    目录: 初始Hive Hive安装与配置 Hive内建操作符与函数开发 Hive JDBC Hive参数 Hive高级编程 Hive QL Hive Shell基本操作 Hive优化 Hive体系结构 ...

  9. 窗口函数和hive优化简记

    窗口函数: (1) OVER():指定分析函数工作的数据窗口大小,这个数据窗口大小可能会随着行的变而变化.常用partition by 分区order by排序. (2)CURRENT ROW:当前行 ...

最新文章

  1. git常用命令速查表【转】
  2. 如何移动SQL SERVER的系统数据库
  3. 数控铣削图案及编程_数控铣削简单图案编程
  4. 搭建一套ASP.NET Core+Nacos+Spring Cloud Gateway项目
  5. tomcat给android发图片,一步一步学会http获取tomcat服务端的图片,在android客户端显示...
  6. js中当前时间的获得以及日期格式的转换
  7. Q120:PBRT-V3,“直接光照”积分器(14.3章节)(翻译不下去了)
  8. java设计模式----代理模式
  9. Datagrid,DataList,Repeate等的数据格式设置表达式
  10. CSA发布云控制矩阵3.0版
  11. 基于C语言和LPC1114开发板的嵌入式实验 SysTick实验、定时器实验、LED呼吸灯实验、蜂鸣器实验
  12. Android Build 获取手机信息
  13. springCloud学习【4】之elasticsearch(1)
  14. Kafka分区分配策略以及重平衡过程总结
  15. st3搭建python开发环境
  16. Lync 2010移动客户端无法登陆的解决办法
  17. Verilog语法和典型电路
  18. 什么是挂载,Linux挂载如何实现详解
  19. ROP_Emporium_ret2csu
  20. Visual Studio 找不到一个或多个组件,请重新安装该应用程序

热门文章

  1. MFC编程入门之十三(对话框:属性页对话框及相关类的介绍)
  2. windows下memcache的安装总结
  3. 容斥原理的二进制实现模版
  4. 用js将form表单同时提交到两个不同页面的方法
  5. lucene中对不同的域使用不同的分析器
  6. 《WF编程》系列之30 - 基本活动:错误处理
  7. Depth-first Search深度优先搜索专题5
  8. 第七章 假设检验(2)
  9. [Leetcode][第63题][JAVA][不同路径2][动态规划][压缩路径]
  10. 计算机论文搜索技巧【一】