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;   合并小文件

posted @ 2019-04-25 17:47  静悟生慧  阅读(8816)  评论(0编辑  收藏  举报