zoukankan      html  css  js  c++  java
  • Hive记录-Hive调优

    1.Join优化

    a.map join

    b.reduce join

    小表为驱动表,或直接将小表加载到内存,做map端join,它的关键字为/*+MAP JOIN(t1)*/

    如果想自动开启map端Join,可以通过hive.mapjoin.smalltable.filesize(默认为25000000)来定义小表的大小,一旦在这个范围之内,就会自动进行map端Join

    2.Reducer的数量

    Hive作业Reducer数量会直接影响作业效率,Hive的Reducer的是通过如下两个参数确定

    参数1:hive.exec.reducers.bytes.per.reducer默认为1GB

    参数2:hive.exec.reducers.max默认为999

    Reducer的个数=min(参数2,总输入数据量/参数1)

    3.列裁剪和分区裁剪---减少作业输入,略过一些不需要的数据

    hive.optimize.cp(列裁剪)、hive.optimize.pruner(分区裁剪)默认开启

    4.Group by优化

    Map端合并
    参数1:hive.map.aggr是否在Map端进行聚合,默认为true
    参数2:hive.groupby.mapaggr.checkinterval在Map端进行聚合操作的条目数目,默认为100000.
    防止数据倾斜:hive.groupby.skewindata

    如select count(*) from table group by key,如有数据倾斜,以key=1为准,其他情况进行聚合

    5.合并小文件

    当文件数目过多时,会给HDFS带来压力,可以通过合并Map和Reduce的输出文件来减少文件数。

    参数1:hive.merge.mapfiles=true 是否合并Map阶段的输出文件

    参数2:hive.merge.mapredfiles=true 是否合并Reduce阶段的输出文件

    参数3:hive.merge.size.per.task=256000000合并的文件的大小默认为256000000

    6.Multi-group By和Multi-insert

    hive特有的语法,可以在同一个查询语句中使用多个不相交的insert语句,只需扫描一遍全表

    如from test insert overwrite table test1 select a,count(e) group by a... insert overwrite...

    7.利用Union All特性

    合并多个MapReduce作业:select union all select---先合并再分组

    8.并行执行---提高效率,但会抢占资源

    参数1:hive.exec.parallel=true

    9.全排序

    hive-mapreduce:order by/sort by

  • 相关阅读:
    数学思维 | 数学错觉-少了的一块钱
    windows | 换行符 | windows换行符号和Unix换行符
    Windows | Hosts | windows hosts简介
    WIndows | windows网页打开速度慢,修改DNS
    Apache-shiro的内置Realm之jdbcRealm
    Apache-shiro的内置Realm之iniRealm
    快速理解shiro的授权
    快速理解shiro的认证
    SpringBoot2.x整合Shiro权限认证项目搭建
    Apache shiro权限控制流程和常见的概念
  • 原文地址:https://www.cnblogs.com/xinfang520/p/7684593.html
Copyright © 2011-2022 走看看