• 避免执行MR

    • select * or select field1,field2
    • limit 10
    • where语句中只有分区字段或该表的本地字段
    • 使用本地set hive.exec.mode.local.auto=true;
  • EXPLAIN的使用 
    hive对sql的查询计划信息解析 
    EXPLAIN SELECT COUNT(1) FROM T_TABLE; 
    EXPLAIN EXTENDED SELECT COUNT(1) FROM T_TABLE;(更为详细)
  • 本地MR(提高本地资源利用率,一般在测试时使用)

    • 本地模式设置 
      set mapred.job.tracker=local; 
      set hive.exec.mode.local.auto=true; (开启自动本地模式) 
      set hive.exec.mode.local.auto.inputbytes.max(默认134217728,设置local mr的最大输入数据量,当输入数据量小于这个值的时候会采用local mr的方式) 
      set hive.exec.mode.local.auto.input.files.max (默认是4, 
      设置local mr的最大输入文件个数,当输入文件个数小于这个值的时候会采用local mr的方式)
  • 开启并行计算 
    set hive.exec.parallel=true; (增加集群利用率)

  • 设置严格模式 
    set hive.mapred.mode=strict | nostrict;

    strict可以禁止三种类型的查询

    1、分区表必须使用 where 分区条件过滤 

    2、Order by语句必须使用 limit 

    3、限制笛卡尔积查询

  • 调整mapper和reducer的数量

    • 太多map导致启动产生过多开销
    • 按照输入数据量大小确定reducer数目, 
      • set mapred.reduce.tasks= 默认3
      • dfs -count /分区目录/*
      • hive.exec.reducers.max设置阻止资源过度消耗
    • JVM重用

      set mapred.job.reuse.jvm.num.task=10 (会一直占用task槽,占用内存)

    • 排序语句

      order by : 全局排序 
      sort    by : 是单reduce排序 
      distribute by : 分区字段排序;

      sort by distribute by 配合使用(相同数据会被分发到同一个reduce上,类似order by) 
      select id from t_bucket distribute by id sort by id desc limit 10; 
      cluster by 
            可以确保类似的数据的分发到同一个reduce task中,并且保证数据有序防止所有的数据分发到同一个reduce上,导致整体的job时间延长

      cluster by语句的等价语句 
      distribute by idsort by id == cluster by

    • Map-side聚合

      set hive.map.aggr=true; 
      这个设置可以将顶层的聚合操作放在Map阶段执行,从而减轻清洗阶段数据传输和Reduce阶段的执行时间,提升总体性能。

      该设置会消耗更多的内存

Hive 性能调优的更多相关文章

  1. Hive(十)Hive性能调优总结

    一.Fetch抓取 1.理论分析 Fetch抓取是指,Hive中对某些情况的查询可以不必使用MapReduce计算.例如:SELECT * FROM employees;在这种情况下,Hive可以简单 ...

  2. HDP Hive性能调优

    (官方文档翻译整理及总结) 一.优化数据仓库 ① Hive LLAP  是一项接近实时结果查询的技术,可用于BI工具以及网络看板的应用,能够将数据仓库的查询时间缩短到15秒之内,这样的查询称之为Int ...

  3. Hive性能调优(二)----数据倾斜

    Hive在分布式运行的时候最害怕的是数据倾斜,这是由于分布式系统的特性决定的,因为分布式系统之所以很快是由于作业平均分配给了不同的节点,不同节点同心协力,从而达到更快处理完作业的目的. Hive中数据 ...

  4. Hive性能调优(一)----文件存储格式及压缩方式选择

    合理使用文件存储格式 建表时,尽量使用 orc.parquet 这些列式存储格式,因为列式存储的表,每一列的数据在物理上是存储在一起的,Hive查询时会只遍历需要列数据,大大减少处理的数据量. 采用合 ...

  5. Hive性能调优

    表分为内部表.外部表.分区表,桶表.内部表.外部表.分区表对应的是目录,桶表对应目录下的文件.

  6. Spark性能调优之解决数据倾斜

    Spark性能调优之解决数据倾斜 数据倾斜七种解决方案 shuffle的过程最容易引起数据倾斜 1.使用Hive ETL预处理数据    • 方案适用场景:如果导致数据倾斜的是Hive表.如果该Hiv ...

  7. Spark 常规性能调优

    1. 常规性能调优 一:最优资源配置 Spark性能调优的第一步,就是为任务分配更多的资源,在一定范围内,增加资源的分配与性能的提升是成正比的,实现了最优的资源配置后,在此基础上再考虑进行后面论述的性 ...

  8. Informatica_(6)性能调优

    六.实战汇总31.powercenter 字符集 了解源或者目标数据库的字符集,并在Powercenter服务器上设置相关的环境变量或者完成相关的设置,不同的数据库有不同的设置方法: 多数字符集的问题 ...

  9. Spark Streaming性能调优详解

    Spark Streaming性能调优详解 Spark  2015-04-28 7:43:05  7896℃  0评论 分享到微博   下载为PDF 2014 Spark亚太峰会会议资料下载.< ...

随机推荐

  1. [hdu6434]Problem I. Count

    题目大意:$T(T\leqslant 10^5)$组数据,每组数据给你$n(n\leqslant 2\times 10^7)$,求$\sum\limits_{i=1}^n\sum\limits_{j= ...

  2. [SP10707]COT2 - Count on a tree II

    题目大意:有一棵$n$个节点的树,第$i$个点有一个颜色$C_i$,$m$组询问,每次问$x->y$的路径上有多少种颜色 题解:树上莫队,把树按欧拉序展开成一条链,令第$i$个节点第一次出现在序 ...

  3. 牛客 2018NOIP 模你赛2 T2 分糖果 解题报告

    分糖果 链接:https://www.nowcoder.com/acm/contest/173/B 来源:牛客网 题目描述 \(N\) 个小朋友围成一圈,你有无穷个糖果,想把其中一些分给他们. 从某个 ...

  4. 洛谷 P4882 lty loves 96! 解题报告

    P4882 lty loves 96! 题目背景 众所周知,\(lty\)非常喜欢\(96\)这两个数字(想歪的现在马上面壁去),更甚于复读(人本复)! 题目描述 由于爱屋及乌,因此,\(lty\)对 ...

  5. 汕头市队赛 SRM10 T3 数学上来先打表

    数学上来先打表 SRM 10 描述 给出 n个点(不同点之间有区别),求出满足下列条件的连边(双向边)方案:1.每条边连接两个不同的点,每两个点之间至多有一条边2.不存在三个点a,b,c使三个点间两两 ...

  6. C语言字节对齐问题详解【转】

    引言 转自:http://www.cnblogs.com/clover-toeic/p/3853132.html 考虑下面的结构体定义: 1 typedef struct{ 2 char c1; 3 ...

  7. redis加入到Windows系统服务

    1.cmd命令,到redis的安装目录输入以下命令  安装命令: redis-server.exe --service-install redis.windows.conf --loglevel ve ...

  8. git 克隆一个新仓库

    1.登陆git网页版,点击右上角创建新项目 2.更改project path(如果需要),填写project name,其它选项默认. 3.到本地要创建存放项目的目录下,打开git命令框,输入git ...

  9. 如何使用python下载网站上的视频

    youtube-dl 从名字上也能看出来,是专门用来下载YouTube的视频. 不过本人对YouTube不感兴趣,但是这个模块可以用来下载bilibili上的视频我们就来试一试 首先pip insta ...

  10. 从linux看android之二--java世界的盘古女娲

    在linux从内核态进入用户态运行init进程后启动的一个进程就是zygote.zygote是在android系统中创建java世界的盘古,他创建了第一个java虚拟机,同时他又是女娲,他成功地繁殖了 ...