zoukankan      html  css  js  c++  java
  • hive set 常用参数汇总

    1、 set hive.auto.convert.join = true;

    mapJoin的主要意思就是,当链接的两个表是一个比较小的表和一个特别大的表的时候,我们把比较小的table直接放到内存中去,然后再对比较大的表格进行map操作。join就发生在map操作的时候,每当扫描一个大的table中的数据,就要去去查看小表的数据,哪条与之相符,继而进行连接。这里的join并不会涉及reduce操作。map端join的优势就是在于没有shuffle。在本质上mapjoin根本就没有运行MR进程,仅仅是在内存就进行了两个表的联合。

    2、 set mapred.job.priority = VERY_HIGH;  --设置任务优先级

    3、set mapred.output.compress = true;

         set hive.exec.compress.output = true;

        压缩最终结果

    4、SET hive.default.fileformat = Orc;  -- 设置默认文件格式

    ORC File,它的全名是Optimized Row Columnar (ORC) file,其实就是对RCFile做了一些优化。据官方文档介绍,这种文件格式可以提供一种高效的方法来存储Hive数据。

    它的设计目标是来克服Hive其他格式的缺陷。运用ORC File可以提高Hive的读、写以及处理数据的性能。

    5、set hive.exec.dynamic.partition=true; 是开启动态分区

         set hive.exec.dynamic.partition.mode=nonstrict; 这个属性默认值是strict,就是要求分区字段必须有一个是静态的分区值,随后会讲到,当前设置为nonstrict,那么可以全部动态分区.

    7、动态分区参数设置

    set hive.exec.max.dynamic.partitions = 130000;
    set hive.exec.max.dynamic.partitions.pernode = 130000;

    set hive.exec.max.created.files = 200000;

    当对hive分区未做设置时,报错如下:
    
    Caused by: org.apache.hadoop.hive.ql.metadata.HiveFatalException: [Error 20004]: Fatal error occurred when node tried to create too many dynamic partitions. The maximum number of dynamic partitions is controlled by hive.exec.max.dynamic.partitions and hive.exec.max.dynamic.partitions.pernode. Maximum was set to: 5000
    at org.apache.hadoop.hive.ql.exec.FileSinkOperator.getDynOutPaths(FileSinkOperator.java:877)
    at org.apache.hadoop.hive.ql.exec.FileSinkOperator.processOp(FileSinkOperator.java:657)
    at org.apache.hadoop.hive.ql.exec.Operator.forward(Operator.java:815)
    at org.apache.hadoop.hive.ql.exec.SelectOperator.processOp(SelectOperator.java:84)
    at org.apache.hadoop.hive.ql.exec.mr.ExecReducer.reduce(ExecReducer.java:244)
    ... 7 more
    
    超过了最大的分区数设置
    
    解决办法:
    
    set hive.exec.dynamic.partition=true;
    
    set hive.exec.dynamic.partition.mode=nonstrict;
    
    set hive.exec.max.dynamic.partitions.pernode=600000;
    
    set hive.exec.max.dynamic.partitions=6000000;
    
    set hive.exec.max.created.files=6000000;
    

      

    8、set mapreduce.map.cpu.vcores = 4;  -- 每个Map Task需要的虚拟CPU个数

    set mapreduce.reduce.cpu.vcores = 8;  -- 每个Reduce Task需要的虚拟CPU个数

    9、set mapreduce.map.memory.mb = 8192; -- 每个Map Task需要的内存量

    set mapreduce.reduce.memory.mb = 10500; -- 每个Reduce Task需要的内存量

    10、set hive.exec.parallel = true;

    set hive.exec.parallel.thread.number = 16;

    ive.exec.parallel可以控制一个sql中多个可并行执行的job的运行方式.
    当hive.exec.parallel为true的时候,同一个sql中可以并行执行的job会并发的执行.

    而参数hive.exec.parallel.thread.number就是控制对于同一个sql来说同时可以运行的job的最大值,该参数默认为8.此时最大可以同时运行8个job.

    比如union操作

    11、set yarn.app.mapreduce.am.resource.mb = 10000;  -- MR ApplicationMaster占用的内存量

    set yarn.app.mapreduce.am.command - opts = - Xmx10000m;  -- 

    12、

    set mapreduce.map.java.opts = - Xmx9192m;  --  设置Map任务JVM的堆空间大小,默认-Xmx1024m
    set mapreduce.reduce.java.opts = - Xmx10000m;   -- 设置reduce任务JVM的堆空间大小,默认-Xmx1024m

    13、

    set spark.sql.hive.mergeFiles=true;   合并小文件

  • 相关阅读:
    centos7安装node.js
    docker容器互联,实现目录、服务共享
    解决docker容器中Centos7系统的中文乱码
    修改centos7容器的时间和宿主机时间一致
    linux安装中文字体
    制作OpenOffice的Docker镜像并添加中文字体解决乱码问题
    centos容器yum安装JDK环境
    函数装饰器
    nc(NetCat)命令
    Linux源码包安装程序
  • 原文地址:https://www.cnblogs.com/Allen-rg/p/10769924.html
Copyright © 2011-2022 走看看