Hive常用参数
Posted 坤岭
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hive常用参数相关的知识,希望对你有一定的参考价值。
属性名称 | 实践 | 中文默认值 | 作用 | 中文含义 |
---|---|---|---|---|
mapreduce.job.queuename | root.default | 作业提交到的队列 | ||
hive.execution.engine | tez | 默认值:mr(在Hive 2.0.0中已弃用) 添加到:Hive 0.13.0,包含Hive -6103和Hive -6098 | 选择执行引擎。选项有:mr (Map Reduce,默认),tez (tez执行,仅适用于Hadoop 2),或spark (spark执行,适用于Hive 1.1.0以后)。 由于历史原因,mr仍然是默认引擎,它本身也是一个历史引擎,在Hive 2线(Hive -12300)中被弃用。它可能会被删除而无需进一步警告。 | |
hive.auto.convert.join | TRUE | 默认值:0.7.0 ~ 0.10.0为false;在0.11.0及更高版本(HIVE-3297)为true 加入:0.7.0与HIVE-1642 | 大表关联小表,把小表自动加载到内存中,需要确认以下配置为true,相当于写了一个mapjoin 作用:是否自动转换为mapjoin | Hive是否开启基于输入文件大小的common join转换为mapjoin的优化。(注意hive-default.xml。在Hive 0.11.0到0.13.1中,template错误地将默认值设为false。 |
hive.smalltable.filesize or hive.mapjoin.smalltable.filesize | 25000000 | 默认值:25000000 添加到:Hive 0.7.0 with Hive -1642: Hive .smalltable.filesize(在Hive 0.8.1中被Hive .mapjoin.smalltable.filesize取代) 添加到:Hive 0.8.1 with Hive -2499: Hive .mapjoin.smalltable.filesize | 小表的最大文件大小,默认为25000000,即25M (默认25M一下认为是小表) | 小表的输入文件大小阈值(以字节为单位);如果文件大小小于此阈值,它将尝试将普通连接转换为映射连接。 |
hive.auto.convert.join.noconditionaltask | TRUE | 默认值:true 添加到:0.11.0与HIVE-3784(默认更改为true与HIVE-4146) | 是否将多个mapjoin合并为一个 | Hive是否开启基于输入文件大小的common join转换为mapjoin的优化。如果该参数是打开的,那么n-1个表/分区的大小之和小于hive.auto.convert.join.noconditionaltask指定的大小。连接将直接转换为mapjoin(没有条件任务)。 |
hive.auto.convert.join.noconditionaltask.size | 10000000 | 默认值:10000000 加入:0.11.0与HIVE-3784 | 多个mapjoin转换为1个时,所有小表的文件大小总和的最大值。 | 如果hive.auto.convert.join.noconditionaltask关闭,则此参数不生效。但是,如果它是打开的,并且n-way连接的n-1个表/分区的大小之和小于此大小,则连接将直接转换为mapjoin(没有条件任务)。默认值是10MB。 |
hive.exec.parallel | TRUE | 默认值:false 添加到:Hive 0.5.0 | 控制在同一个sql中的不同的job是否可以同时运行,默认为false. | 是否并行执行作业。适用于可以并行运行的MapReduce作业,例如在连接之前处理不同源表的作业。在Hive 0.14中,它也适用于可以并行运行的移动任务,例如在多插入过程中移动文件以插入目标。 |
hive.merge.mapfiles | TRUE | 默认值:true 添加到:Hive 0.4.0 | 默认值ture,在Map-only的任务结束时合并小文件 | 在仅映射作业结束时合并小文件。 |
hive.merge.size.per.task | 256000000 | 默认值:256000000 添加到:Hive 0.4.0 | 作业结束时合并文件的大小,默认256MB | 作业结束时合并文件的大小。 |
hive.merge.smallfiles.avgsize | 256000000(256M) | 默认值:16000000 添加到:Hive 0.5.0 | 如果一个 job 结束后,生成的文件的平均大小 小于参数 hive.merge.smallfiles.avgsize 设定的值,则认为是小文件 平均文件大小,是决定是否执行合并操作的阈值,默认16000000 | 当一个作业的平均输出文件大小小于这个数字时,Hive将启动一个额外的map-reduce作业,将输出文件合并为更大的文件。如果hive.merge.mapfiles为真,这只会用于仅映射作业,如果hive.merge.mapredfiles为真,这只会用于map-reduce作业。 |
hive.map.aggr | TRUE | 默认值:Hive 0.3及以上版本为true;Hive 0.2为false 添加到:Hive 0.2.0 | 是否在 Map 端进行聚合,默认为 True ;该设置会消耗更多的内存 | Hive Group By查询中是否使用映射端聚合。 |
hive.groupby.skewindata | TRUE | 默认值:false 添加到:Hive 0.3.0 | 如果大表和大表进行join操作,则可采用skewjoin 当 hive.groupby.skewindata = true 时,Hive 会将原来的一个 MaReduce 阶段转化成两个 MapReduce 阶段: 一阶段MapReduce:随机打散数据,打散后进行局部聚合(数据去重 + 多Task局部计数) 二阶段MapReduce:对一阶段的局部聚合结果进行最终聚合(最终汇总计数) | 数据中是否存在倾斜,需要通过查询来优化组。 |
hive.groupby.mapaggr.checkinterval | 100000 | 默认值:100000 添加到:Hive 0.3.0 | 控制在 Map 端进行聚合操作的条目数目 | 执行分组键/聚合类大小的行数。 |
hive.optimize.skewjoin | TRUE | 默认值:false 添加到:Hive 0.6.0 | 在参数 hive.optimize.skewjoin=true 时, Hive的reduce任务会在处理join key 的时候 判断其数量是否大于该 阈值,如果是将作为一个Skew Join 处理 不超过hive.skewjoin.key的key,走正常join流程 超过的hive.skewjoin.key的key,先写到hdfs上,然后再启动一个join,执行map join | 是否启用倾斜连接优化。(参见hive.optimize.skewjoin.compiletime) |
hive.skewjoin.key | 100000 | 默认值:100000 添加到:Hive 0.6.0 | 确定连接中是否有倾斜键。如果在连接操作符中看到具有相同键的行数超过指定数目,则认为该键为倾斜连接键。 | |
hive.exec.compress.output | TRUE | 默认值:false 添加于:Hive 0.2.0 | 用户可以对最终生成的Hive表的数据压缩。该参数控制这一功能的激活与禁用,设置为true来声明将结果文件进行压缩 | 这控制是否压缩查询的最终输出(到本地/hdfs 文件或 Hive 表)。压缩编解码器和其他选项由 Hadoop 配置变量 mapred.output.compress* 确定。 |
hive.support.quoted.identifiers | None | 默认值: column 添加于:带有HIVE-6013 的Hive 0.13.0 | 使用正则表达式查询 | 是否使用带引号的标识符。值可以是“ none”或“ column”。 column: 列名可以包含任何 Unicode 字符。在反引号 ( ) 内指定的任何列名都按`字面意思处理。在反引号字符串中,使用双反引号 ( ``) 表示反引号字符。 none: 只有字母数字和下划线字符在标识符中有效。带反引号的名称被解释为正则表达式。这也是 0.13.0 之前的版本中的行为。 |
hive.exec.dynamic.partition.mode | nonstrict | 默认值:strict 添加于:Hive 0.6.0 | 设置动态分区 ,分区模式设置 | 在strict模式下,用户必须至少指定一个静态分区,以防用户不小心覆盖所有分区。在n 模式下,所有分区都 可以是动态的。nonstrict 设置为 nonstrict支持INSERT ... VALUES、UPDATE 和 DELETE 事务(Hive 0.14.0 及更高版本)。有关打开 Hive 事务所需参数的完整列表,请参阅 hive.txn.manager。 |
hive.exec.max.dynamic.partitions.pernode | 100000 | 默认值:100 添加于:Hive 0.6.0 | 单个节点上的mapper/reducer允许创建的最大分区 | 每个 mapper/reducer 节点中允许创建的最大动态分区数。 |
hive.exec.max.dynamic.partitions | 10000 | 默认值:1000 添加于:Hive 0.6.0 | 允许动态分区的最大数量 | 总共允许创建的最大动态分区数。 |
hive.input.format | org.apache.hadoop.hive.ql.io.CombineHiveInputFormat | 默认值: org.apache.hadoop.hive.ql.io.CombineHiveInputFormat 添加于:Hive 0.5.0 | 会对 map 端的小文件进行合并 | 默认输入格式。如果您遇到 CombineHiveInputFormat 问题,请将其设置为 HiveInputFormat。 |
hive.merge.mapredfiles | 默认值:false 添加于:Hive 0.4.0 | 在map-reduce job后合并文件,默认false | 在map-reduce作业结束时合并小文件。 |
以上是关于Hive常用参数的主要内容,如果未能解决你的问题,请参考以下文章