hive参数配置及说明
#分类
Hive.exec.mode.local.auto #决定 hive 是否应该自动地根据输入文件大小,在本地运行(在GateWay运行) 默认值:true
hive.exec.mode.local.auto.inputbytes.max # 如果 hive.exec.mode.local.auto 为 true,当输入文件大小小于此阈值时可以自动在本地模式运行,默认是128兆。 默认值:134217728L
hive.exec.mode.local.auto.tasks.max #如果 hive.exec.mode.local.auto 为 true,当 Hive Tasks(Hadoop Jobs)小于此阈值时,可以自动在本地模式运行。 默认值:4
hive.auto.convert.join #是否根据输入小表的大小,自动将 Reduce 端的 Common Join 转化为 Map Join,从而加快大表关联小表的 Join 速度。 默认值:false
hive.mapred.local.mem #Mapper/Reducer 在本地模式的最大内存量,以字节为单位,0为不限制。 默认值:0
mapred.reduce.tasks #所提交 Job 的 reduer 的个数,使用 hadoop Client 的配置。 默认值:1
hive.exec.scratchdir #HDFS路径,用于存储不同 map/reduce 阶段的执行计划和这些阶段的中间输出结果。 默认值:/tmp/<user.name>/hive
hive.metastore.warehouse.dir #Hive 默认的数据文件存储路径,通常为 HDFS 可写的路径。 默认值:"
hive.groupby.skewindata #决定 group by 操作是否支持倾斜的数据。 默认值:false
hive.merge.mapfiles #是否开启合并 Map 端小文件,对于 Hadoop 0.20 以前的版本,起一首新的 Map/Reduce Job,对于 0.20 以后的版本,则是起使CombineInputFormat 的 MapOnly Job。 默认值:true
hive.merge.mapredfiles #是否开启合并 Map/Reduce 小文件,对于 Hadoop 0.20 以前的版本,起一首新的 Map/Reduce Job,对于 0.20 以后的版本,则是起使用 CombineInputFormat 的 MapOnly Job。 默认值:false
hive.default.fileformat #Hive 默认的输出文件格式,与创建表时所指定的相同,可选项为 'TextFile' 、 'SequenceFile' 或者 'RCFile'。 'TextFile'
hive.mapred.mode #Map/Redure 模式,如果设置为 strict,将不允许笛卡尔积。 默认值: 'nonstrict'
hive.exec.parallel #是否开启 map/reduce job的并发提交。 默认值: false
hive.security.authorization.enabled #Hive是否开启权限认证。 默认值:false
hive.exec.plan #Hive执行计划的路径,会在程序中自动进行设置 默认值:null
hive.exec.submitviachild #决定 map/reduce Job 是否应该使用各自独立的 JVM 进行提交(Child进程),默认情况下,使用与 HQL compiler 相同的 JVM进行提交。 默认值:false
hive.exec.script.maxerrsize #通过 TRANSFROM/MAP/REDUCE 所执行的用户脚本所允许的最大的序列化错误数。 默认值:100000
hive.exec.script.allow.partial.consumption #是否允许脚本只处理部分数据,如果设置为 true ,因 broken pipe 等造成的数据未处理完成将视为正常。 默认值:false
hive.exec.compress.output #决定查询中最后一个 map/reduce job 的输出是否为压缩格式。 默认值:false
hive.exec.compress.intermediate #决定查询的中间 map/reduce job (中间 stage)的输出是否为压缩格式。 默认值:false
hive.intermediate.compression.codec # 中间 map/reduce job 的压缩编解码器的类名(一个压缩编解码器可能包含多种压缩类型),该值可能在程序中被自动设置。
hive.intermediate.compression.type #中间 map/reduce job 的压缩类型,如 "BLOCK" "RECORD"。
hive.exec.reducers.bytes.per.reducer # 每一个 reducer 的平均负载字节数。 默认值:1000000000
hive.exec.reducers.max #reducer 个数的上限。 默认值:999
hive.exec.pre.hooks #语句层面,整条 HQL 语句在执行前的 hook 类名。 默认值:"
hive.exec.post.hooks #语句层面,整条 HQL 语句在执行完成后的 hook 类名。
hive.exec.parallel.thread.number #并发提交时的并发线程的个数。 默认值:8
hive.mapred.reduce.tasks.speculative.execution #是否开启 reducer 的推测执行,与 mapred.reduce.tasks.speculative.execution 作用相同。 默认值:false
hive.exec.counters.pull.interval #客户端拉取 progress counters 的时间,以毫秒为单位。 默认值:1000L
hive.exec.max.dynamic.partitions #所允许的最大的动态分区的个数。 默认值:1000
hive.exec.max.dynamic.partitions.pernode #单个 reduce 结点所允许的最大的动态分区的个数。 默认值:100
hive.exec.default.partition.name #默认的动态分区的名称,当动态分区列为''或者null时,使用此名称。'' '__HIVE_DEFAULT_PARTITION__'
hadoop.bin.path #Hadoop Client 可执行脚本的路径,该路径用于通过单独的 JVM 提交 job,使用 Hadoop Client 的配置。 默认值:$HADOOP_HOME/bin/hadoop
hadoop.config.dir #Hadoop Client 配置文件的路径,使用 Hadoop Client 的配置。 默认值:$HADOOP_HOME/conf
fs.default.name #Namenode 的 URL,使用 Hadoop Client 的配置。 默认值:file:///
map.input.file #Map 的输入文件,使用 Hadoop Client 的配置。 默认值:null
mapred.input.dir #Map 的输入目录,使用 Hadoop Client 的配置。 默认值: null
mapred.input.dir.recursive #输入目录是否可递归嵌套,使用 Hadoop Client 的配置。 默认值:false
mapred.job.tracker #Job Tracker 的 URL,使用 Hadoop Client 的配置,如果这个配置设置为 'local',将使用本地模式。 默认值:local
mapred.job.name #Map/Reduce 的 job 名称,如果没有设置,则使用生成的 job name,使用 Hadoop Client 的配置。 默认值:null
mapred.reduce.tasks.speculative.execution #Map/Reduce 推测执行,使用 Hadoop Client 的配置。 默认值:null
hive.metastore.metadb.dir #Hive 元数据库所在路径。 默认值:"
hive.metastore.uris #Hive 元数据的 URI,多个 thrift://地址,以英文逗号分隔。 默认值:"
hive.metastore.connect.retries #连接到 Thrift 元数据服务的最大重试次数。 默认值:3
javax.jdo.option.ConnectionPassword #JDO 的连接密码。 默认值:"
hive.metastore.ds.connection.url.hook #JDO 连接 URL Hook 的类名,该 Hook 用于获得 JDO 元数据库的连接字符串,为实现了 JDOConnectionURLHook 接口的类。 默认值:"
javax.jdo.option.Connection
###以下为自己在工作中常用的几个参数配置
#hive语句执行优化,参数设置
#Map/Reduce 的 job 名称 : set mapred.job.name=serv_v_m_cus_al_stop_infn_${v_date}_${v_prov};
#作业优先级 set mapred.job.priority=HIGH;
#是否打开动态分区。 默认值:false set hive.exec.dynamic.partition=true
#打开动态分区后,有 strict 和 nonstrict 两个值可选,strict要求至少包含一个静态分区列,nonstrict则无此要求.默认值:strict
set hive.exec.dynamic.partition.mode=true
#多列去重操作 set hive.groupby.skewindata=true;
#控制hive的查询结果输出是否进行压缩,压缩方式在hadoop的mapred.output.compress中配置,默认不压缩false;
set hive.exec.compress.output=false;
#压缩算法默认值org.apache.hadoop.io.compress.DefaultCodec
set mapred.output.compression.codec=org.apache.hadoop.io.compress.SnappyCodec;
#压缩类型 set mapred.output.compression.type=BLOCK;
#每个Map Task需要的内存量 set mapreduce.map.memory.mb=4096;
#设置reduce container的内存大小 set mapreduce.reduce.memory.mb=4096;
#限制map数
set mapred.max.split.size=100000000;
set mapred.min.split.size.per.node=100000000;
set mapred.min.split.size.per.rack=100000000;
#是否根据输入小表的大小,自动将 Reduce 端的 Common Join 转化为 Map Join,从而加快大表关联小表的 Join 速度。
set hive.auto.convert.join=false;(此配置可能会导致数据倾斜,曾经遇到过一次,去掉这个配置之后,数据不再倾斜)
#执行前进行小文件合并 set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;