HIVE参数配置

--查看参数使用:set  或者set -v;

--设置参数使用:set  key=value;

 

--设置reduce个数(默认-1)

mapreduce.job.reduces=-1

--控制最大的reducer的数量(默认1009)

hive.exec.reducers.max=1009

--每个reduce处理的数据量(默认300000000)

hive.exec.reducers.bytes.per.reducer=256000000

--设置任务名称,方便查找监控

mapred.job.name=xxx

example:

这里的${statis_date}不要加引号,否则无法识别

mapred.job.name=xxx_${statis_date}

分区中partition(statis_date='${statis_date}')需要加。

create table xxx_${statis_date}如果表被引用的话${statis_date}也不要添加引号

mapreduce.input.fileinputformat.split.minsize=1

mapreduce.input.fileinputformat.split.minsize.per.rack=1

mapreduce.input.fileinputformat.split.minsize.per.node=1

mapreduce.input.fileinputformat.split.maxsize=256000000

--数据类型校验

hive.typecheck.on.insert=true

-- 除去表名(默认是true,改为false即可)

hive.resultset.use.unique.column.names=true

--合并小文件(每个文件对应一个map,把小文件合并成大文件可以减少map数量)

--map的个数 == 输入文件的个数

--合理合并小文件,减少map个数

--合并map输出文件

hive.merge.mapfiles=true

--合并reduce输出文件

hive.merge.mapredfiles=false

--合并后文件的大小

hive.merge.size.per.task=256000000

--决定是否使用map端join,如果关联表有一个小于这个参数的配置则自动开map端join

hive.mapjoin.smalltable.filesize=25000000

--执行select是否运行mapreduce参数设置(

more(默认值):简单查询不走mapreduce;

minimal:任何简单select都会走map/reduce

none:任何select都不会走map/reduce

)

hive.fetch.task.conversion=more

--配置mapreduce计算引擎

set hive.execution.engine=mr

--配置spark计算引擎

set hive.execution.engine=spark;

--配置tez 计算引擎

set hive.execution.engine=tez;

-- 是否允许并行执行sql,默认不允许(允许的前提是多个sql不存在前后关系)

hive.exec.parallel=false

--并行执行线程个数,默认8个

hive.exec.parallel.thread.number=8

--设置是否自动开启本地模式,把sql转化为mapreduce不再发送到yarn上执行,而是在开启hiveserver2的机器上运行

set hive.exec.mode.local.auto=true

--本地模式容忍的最大输入文件字节数

set hive.exec.mode.local.auto.inputbytes.max=134217728

--本地模式容忍的最大文件个数

set hive.exec.mode.local.auto.input.files.max=4

--动态导入分区数据参数配置

-- 是否允许动态指定partition,如果允许的话,那么我们修改内容的时候可以不指定partition的值

hive.exec.dynamic.partition=true

-- 动态partition模式,strict模式要求至少给定一个静态的partition值。nonstrict允许全部partition为动态的值

hive.exec.dynamic.partition.mode=nonstrict

--每个mapper和reducer所能创建的最大动态分区数,如果超出这个值则会报错,可不进行设置

hive.exec.max.dynamic.partitions.pernode=100

--一个动态分区创建语句可以创建的最大分区数,超出则报错。可不进行设置

hive.exec.max.dynamic.partitions=1000

-- 在mr程序中最大创建的hdfs文件个数

hive.exec.max.created.files=100000

-- 压缩,设置是否压缩(最终输出结果)

--默认压缩格式deflate(设置为false即不进行压缩)

set hive.exec.compress.output=true

-- 压缩成gz格式( 设置压缩Reduce类型输出)

SET mapreduce.output.fileoutputformat.compress.codec=org.apache.hadoop.io.compress.GzipCodec;

-- 压缩成bz2格式( 设置压缩Reduce类型输出)

SET mapreduce.output.fileoutputformat.compress.codec=org.apache.hadoop.io.compress.BZip2Codec;

-- 压缩成Snappy格式( 设置压缩Reduce类型输出)

SET mapreduce.output.fileoutputformat.compress.codec=org.apache.hadoop.io.compress.SnappyCodec;

-- 压缩成LZO格式( 设置压缩Reduce类型输出)

SET mapreduce.output.fileoutputformat.compress.codec= com.hadoop.compression.lzo.LzoCodec;

-- 压缩成Lzop格式( 设置压缩Reduce类型输出)

SET

mapreduce.output.fileoutputformat.compress.codec=com.hadoop.compression.lzo.LzopCodec;

--中间结果压缩(map输出压缩)

--查看编解码器

SET dfs.image.compression.codec

dfs.image.compression.codec=org.apache.hadoop.io.compress.DefaultCodec

--开启中间是否进行压缩

SET hive.exec.compress.intermediate=TRUE

--设置编解码格式

SET mapred.output.compression.type=BLOCK|RECORD|NONE

--map配置压缩格式

SET mapreduce.map.output.compress.codec=org.apache.hadoop.io.compress.SnappyCodec;

SET mapreduce.map.output.compress.codec=org.apache.hadoop.io.compress.GzipCodec;

SET mapreduce.map.output.compress.codec=org.apache.hadoop.io.compress.BZip2Codec;

SET mapreduce.map.output.compress.codec=com.hadoop.compression.lzo.LzoCodec;

SET mapreduce.map.output.compress.codec=com.hadoop.compression.lzo.LzopCodec;

--开启最终结果压缩(mapred-site.xml)

SET hive.exec.compress.output=true

--因为Hive底层用的是mapreduce,也可以直接在hadoop中对mapred-site.xml中进行配置

<property>

<!--设置map端是否开启压缩-->

    <name>mapreduce.map.output.compress</name>

    <value>true</value>

</property>

<property>

<!--设置map端压缩格式-->

    <name>mapreduce.map.output.compress.codec</name>

    <value>org.apache.hadoop.io.compress.SnappyCodec</value>

</property>

<property>

<!--设置mapreduce端是否开启压缩-->

    <name>mapreduce.output.fileoutputformat.compress</name>

    <value>true</value>

</property>

<property>

<!--设置mapreduce端压缩格式-->

    <name>mapreduce.output.fileoutputformat.compress.codec</name>

    <value>org.apache.hadoop.io.compress.SnappyCodec</value>

</property>

hive.exec.compress.intermediate=false

hive.exec.check.crossproducts=true

-- 当启用动态hive的时候,如果插入的partition为空,是否抛出异常信息

hive.error.on.empty.partition=false

显示数据库名字需设置:

set hive.cli.print.current.db=true

hive -e hiveconf 参数 hive参数设置_hive -e hiveconf 参数

老版本hive中如果在命令行进行查询需要看到字段,需进行设置(默认false):

set hive.cli.print.header=true

hive -e hiveconf 参数 hive参数设置_hadoop_02

--是否开启自动的map端join

hive.auto.convert.join=true

--设置order by 执行时,是否严格模式

hive.mapred.mode=nonstrict/strict

--查看当前堡垒机hive有多少版本

change_hive_version

 

一个标准hive任务常用的配置项(优化)

-- 设置作业名

set mapred.job.name = SOR_EVT_TBL_FB_CUST (${hivevar:statis_date});

-- 每个Map最大输入大小

set mapred.max.split.size = 300000000;

-- 每个Map最小输入大小

set mapred.min.split.size = 100000000;

-- 执行Map前进行小文件合并

set hive.input.format = org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;

-- hive自动根据sql,选择使用common join或者map join

set hive.auto.convert.join = false;

-- 在Map-only的任务结束时合并小文件

set hive.merge.mapfiles = true;

-- 在Map-Reduce的任务结束时不合并小文件

set hive.merge.mapredfiles = false;

-- 合并文件的大小

set hive.merge.size.per.task = 300000000;

 

-- 添加jar包

USE fdm_sor;

add jar /home/bigdata/software/hive/ext-lib/suning-hive-inputformat.jar;