apache-hive / 3.1.1 / reference / Configuration_Properties.html

配置单元配置属性

本文档描述了 Hive 用户配置属性(有时称为* parameters variables options *),并说明了发行新特性的情况。

配置属性的规范列表在HiveConf Java 类中 Management,因此,请参阅HiveConf.java文件以获取 Hive 发行版中可用的配置属性的完整列表。

有关如何使用这些配置属性的信息,请参见Configuring Hive。该文档还在Configuration Variables部分中描述了用于设置 Hive 的 Management 配置属性。 Hive MetastoreManagement描述了元存储的其他配置属性。

Version information

从 Hive 0.14.0(HIVE-7211)开始,配置名称以“ hive”开头。被视为 Hive 系统属性。如果Configuration Properties#hive.conf.validation选项为 true(默认),则任何尝试设置以“配置单元”开头的配置属性的尝试。未注册到 Hive 系统的文件将引发异常。

查询和 DDL 执行

hive.execution.engine
  • 默认值:mr(在 Hive 2.0.0 中已弃用–参见下文)

  • 添加于:Hive 0.13.0 中带有HIVE-6103HIVE-6098

选择执行引擎。选项包括:mr(默认为 Map Reduce),tez(仅对 Hadoop 2 执行Tez)或spark(对 Hive 1.1.0 起执行Spark)。

虽然mr出于历史原因仍是默认引擎,但它本身是历史引擎,在 Hive 2 行(HIVE-12300)中已弃用。可以将其删除而无需进一步警告。

有关更多信息,请参见HiveHive on Spark,有关其配置属性,请参见下面的Tez sectionSpark section

hive.execution.mode
  • 选择查询片段将在容器中还是在 lap 中运行

  • 默认值:container

  • Valid settings

  • 容器:运行容器

    • lap:在任务执行过程中利用 lap 节点
  • 内建于:Hive 2.0 with HIVE-9460

mapred.reduce.tasks
  • 默认值:-1

  • 添加于:Hive 0.1.0

每个作业的默认 reduce 任务数。通常设置为接近可用主机数量的质数。当 mapred.job.tracker 为“本地”时被忽略。 Hadoop 默认将其设置为 1,而 Hive 使用-1 作为其默认值。通过将此属性设置为-1,Hive 将自动计算出减速器的数量。

hive.exec.reducers.bytes.per.reducer
  • 预设值:Hive 0.14.0 之前的1,000,000,000; Hive 0.14.0 及更高版本中为 256 MB(256,000,000)

  • 添加于:Hive 0.2.0;默认值在 0.14.0 中使用HIVE-7158(和HIVE-7917)更改

每个减速器的尺寸。 Hive 0.14.0 和更早版本中的默认值为 1 GB,即,如果 Importing 大小为 10 GB,则将使用 10 个 reducer。在 Hive 0.14.0 及更高版本中,默认值为 256 MB,即,如果 Importing 大小为 1 GB,则将使用 4 个 reducer。

hive.exec.reducers.max
  • 预设值:Hive 0.14.0 之前的999; Hive 0.14.0 及更高版本中的1009

  • 添加于:Hive 0.2.0;默认值在 0.14.0 中使用HIVE-7158(和HIVE-7917)更改

将使用的最大减速器数量。如果配置属性 Configuration Properties#mapred.reduce.tasks 中指定的负数为负,则 Hive 在自动确定减速器数量时将以此为最大减速器数量。

hive.jar.path
  • 默认值:(空)

  • 添加于:Hive 0.2.0 或更早版本

在单独的 jvm 中提交作业时使用的 hive_cli.jar 的位置。

hive.aux.jars.path
  • 默认值:(空)

  • 添加于:Hive 0.2.0 或更早版本

包含用户定义函数(UDF)和 SerDes 的实现的插件 jar 的位置。

hive.reloadable.aux.jars.path
  • 默认值:(空)

  • 新增于:Hive 0.14.0 with HIVE-7553

插件 jar 的位置,可以是逗号分隔的文件夹或 jar。可以通过执行直线重新加载命令来更新(添加,删除或更新)它们,而不必重新启动 HiveServer2.这些 jar 可以像hive.aux.jars.path中的辅助类一样用于创建 UDF 或 SerDes。

hive.exec.scratchdir
  • 默认值:/tmp/${user.name}在 Hive 0.2.0 到 0.8.0 中; /tmp/hive-${user.name}在 Hive 0.8.1 至 0.14.0 中;或/tmp/hive在 Hive 0.14.0 及更高版本中

  • 添加于:Hive 0.2.0;默认值在HIVE-6847HIVE-8143中已在 0.8.1 和 0.14.0 中更改

在 Hive 作业上占用空间。 Hive 使用此目录来存储用于查询的不同 Map/归约阶段的计划,以及存储这些阶段的中间输出。

  • Hive 0.14.0 及更高版本:* Hive 作业的 HDFS 根暂存目录,该目录是使用 write all(733)权限创建的。对于每个连接用户,将使用${ Configuration Properties#hive.scratch.dir.permission }创建一个 HDFS 暂存目录${ hive.exec.scratchdir } /<username>。

另请参见hive.start.cleanup.scratchdirConfiguration Properties#hive.scratchdir.lock 。在本地模式下运行 Hive 时,请参见hive.exec.local.scratchdir

hive.scratch.dir.permission
  • 默认值:700

  • 添加于:Hive 0.12.0 with HIVE-4487

在根临时目录中创建的特定于用户的临时目录的权限。 (请参阅hive.exec.scratchdir。)

hive.exec.local.scratchdir
  • 默认值:/tmp/${user.name}

  • 添加于:Hive 0.10.0 和HIVE-1577

当 Hive 在本地模式下运行时,请占用 Hive 作业的空间。另请参见hive.exec.scratchdir

hive.hadoop.supports.splittable.combineinputformat

是否合并较小的 Importing 文件,以便产生更少的 Map 器。

hive.map.aggr
  • 默认值:Hive 0.3 及更高版本中的truefalse在 Hive 0.2 中

  • 添加于:Hive 0.2.0

是否在 Hive 分组依据查询中使用 Map 侧聚合。

hive.groupby.skewindata
  • 默认值:false

  • 添加于:Hive 0.3.0

数据中是否存在偏斜以优化按查询分组。

hive.groupby.mapaggr.checkinterval
  • 默认值:100000

  • 添加于:Hive 0.3.0

在其后执行分组键/聚合类的大小的行数。

hive.new.job.grouping.set.cardinality
  • 默认值:30

  • 添加于:Hive 0.11.0 和HIVE-3552

是否应启动新的 Map 缩减作业以对集合/汇总/多维数据集进行分组。

对于类似“通过汇总的 a,b,c 从 T 组中选择 a,b,c,count(1)”这样的查询;每行创建四行:(a,b,c),(a,b,null),(a,null,null),(null,null,null)。如果 T 的基数非常高,则可能会导致跨越 Map 缩小边界的爆炸,并且 Map 侧聚合不会做得很好。

此参数决定 Hive 是否应添加其他 map-reduce 作业。如果分组集基数(在上面的示例中为 4)大于此值,则在原始的“ group by”将减小数据大小的假设下添加新的 MR 作业。

hive.mapred.local.mem
  • 默认值:0

  • 添加于:Hive 0.3.0

对于本地模式,存储 Map 器/缩小器。

hive.map.aggr.hash.force.flush.memory.threshold
  • 默认值:0.9

  • 添加于:Hive 0.7.0 和HIVE-1830

Map 端组聚合哈希表将使用的最大内存。如果内存使用量大于此数量,则强制刷新数据。

hive.map.aggr.hash.percentmemory
  • 默认值:0.5

  • 添加于:Hive 0.2.0

Map 端组聚合哈希表将使用的总内存部分。

hive.map.aggr.hash.min.reduction
  • 默认值:0.5

  • 添加于:Hive 0.4.0

如果哈希表大小与 Importing 行之间的比率大于此数字,则将关闭哈希聚合。设置为 1 以确保永远不会关闭哈希聚合。

hive.optimize.groupby
  • 默认值:true

  • 添加于:Hive0.5.0

是否从存储分区/表中启用存储分区组。

hive.optimize.countdistinct
  • 默认值:true

  • 添加于:Hive 3.0.0 with HIVE-16654

是否将计数不同地重写为 2 个阶段,即第一阶段使用具有计数不同键的多个化简器,第二阶段使用不带密钥的单个化简器。

hive.optimize.remove.sq_count_check
  • 默认值:false

  • 添加于:Hive 3.0.0 with HIVE-16793

是否使用 sq_count_check UDF 删除带有按组常数的标量子查询的额外联接。

hive.multigroupby.singlemr

是否通过查询优化多个组以生成单个 M/R 作业计划。如果“多个分组查询”具有公用的“分组关键字”,则会对其进行优化以生成单个 M/R 作业。 (此配置属性在 0.9.0 版中已删除.)

hive.multigroupby.singlereducer
  • 默认值:true

  • 添加到:Hive 0.9.0 和HIVE-2621

是否通过查询优化多个组以生成单个 M/R 作业计划。如果“多个分组查询”具有公用的“分组关键字”,则会对其进行优化以生成单个 M/R 作业。

hive.optimize.cp
  • 默认值:true

  • 添加到:Hive 0.4.0 和HIVE-626

  • 删除于:Hive 0.13.0 with HIVE-4113

是否启用列修剪器。 (此配置属性在版本 0.13.0 中已删除.)

hive.optimize.index.filter
  • 默认值:false

  • 添加于:Hive 0.8.0 和HIVE-1644

是否启用索引自动使用。

注意:有关 Hive 索引的更多配置属性,请参见Configuration Properties#Indexing

hive.optimize.ppd
  • 默认值:true

  • 添加于:Hive 0.4.0 和HIVE-279,默认更改为 true 在 Hive 0.4.0 和HIVE-626

是否启用谓词下推(PPD)。

注意:还要打开 Configuration Properties#hive.optimize.index.filter 以在 PPD 中使用特定于文件格式的索引。

hive.optimize.ppd.storage
  • 默认值:true

  • 添加于:Hive 0.7.0

是否将谓词下推到存储处理程序中。当 hive.optimize.ppd 为 false 时被忽略。

hive.ppd.remove.duplicatefilters
  • 默认值:true

  • 添加于:Hive 0.8.0

在查询优化期间,可以在运算符树中将过滤器下推。如果此配置为 true,则仅下推过滤器保留在运算符树中,并且原始过滤器将被删除。如果此配置为 false,则原始过滤器也会保留在原始位置的操作员树中。

hive.ppd.recognizetransivity
  • 默认值:true

  • 添加于:Hive 0.8.1

是否在等分条件下可传递地复制谓词过滤器。

hive.join.emit.interval
  • 默认值:1000

  • 添加于:Hive 0.2.0

最右边的联接操作数 Hive 中应该缓冲多少行
发出联接结果。

hive.join.cache.size
  • 默认值:25000

  • 添加于:Hive0.5.0

联接表中有多少行(流表除外)
应该缓存在内存中。

hive.mapjoin.bucket.cache.size

Map 联接表中的每个键中应将多少值缓存在内存中。

hive.mapjoin.followby.map.aggr.hash.percentmemory
  • 默认值:0.3

  • 添加于:Hive 0.7.0 和HIVE-1830

Map 端组聚合哈希表使用的总内存部分,此组后跟 Map 联接。

hive.smalltable.filesize 或 hive.mapjoin.smalltable.filesize
  • 默认值:25000000

  • 添加到:具有HIVE-1642的 Hive 0.7.0: hive.smalltable.filesize (由 Hive 0.8.1 中的 hive.mapjoin.smalltable.filesize 替换)

  • 添加于:具有HIVE-2499的 Hive 0.8.1: hive.mapjoin.smalltable.filesize

小表的 Importing 文件大小的阈值(以字节为单位);如果文件大小小于此阈值,它将尝试将普通联接转换为 Map 联接。

hive.mapjoin.localtask.max.memory.usage

该数字表示本地任务将键/值保存到内存中的哈希表中可能要占用的内存量。如果本地任务的内存使用量大于此数量,则本地任务将中止。这意味着小表的数据太大而无法保存在内存中。

hive.mapjoin.followby.gby.localtask.max.memory.usage
  • 默认值:0.55

  • 添加于:Hive 0.7.0 和HIVE-1830

此数字表示当此 Map 连接后跟一个 group by 时,本地任务将键/值保存到内存中的哈希表中需要占用多少内存。如果本地任务的内存使用量大于此数量,则本地任务将自行中止。这意味着小表的数据太大而无法保存在内存中。

hive.mapjoin.check.memory.rows

该数字表示处理完多少行后需要检查内存使用情况。

hive.ignore.mapjoin.hint
  • 默认值:true

  • 添加于:Hive 0.11.0 和HIVE-4042

Hive 是否忽略 mapjoin 提示。

hive.smbjoin.cache.rows

每个 sort-merge-bucket 联接表应在内存中缓存多少个具有相同键值的行。

hive.mapjoin.optimized.keys

MapJoin 哈希表是否应使用优化的(按大小)键,从而使表占用更少的内存。根据键,整个表的内存节省可以达到 5-15%左右。

hive.mapjoin.optimized.hashtable
  • 默认值:true

  • 新增于:Hive 0.14.0 with HIVE-6430

Hive 是否应为 MapJoin 使用内存优化的哈希表。仅适用于Configuration Properties#TezConfiguration Properties#Spark,因为无法优化内存优化的哈希表。 (从 Hive 1.3.0 开始,使用HIVE-11180支持 Spark。)

hive.mapjoin.optimized.hashtable.wbsize
  • 默认值:10485760 (10 * 1024 * 1024)

  • 新增于:Hive 0.14.0 with HIVE-6430

优化的哈希表(请参阅 Configuration Properties#hive.mapjoin.optimized.hashtable )使用缓冲区链来存储数据。这是一个缓冲区大小。如果较大,则 Hashtable 可能会稍快一些,但对于较小的联接,将分配不必要的内存,然后进行修剪。

hive.mapjoin.lazy.hashtable

MapJoin 哈希表是否应按需反序列化值。根据联接实际将要接触的表中的值的多少,它可以通过不为不需要的行创建对象来节省大量内存。如果需要所有行,显然没有任何好处。

hive.hashtable.initialCapacity
  • 默认值:100000

  • 添加于:Hive 0.7.0 和HIVE-1642

如果没有统计信息,或者 Configuration Properties#hive.hashtable.key.count.adjustment 设置为 0,则 mapjoin 哈希表的初始容量。

hive.hashtable.key.count.adjustment
  • 默认值:1.0

  • 新增于:Hive 0.14.0 with HIVE-7616

调整从表和列统计信息得出的 mapjoin 哈希表大小;密钥数量的估计值除以该值。如果值为 0,则不使用统计信息,而是使用 Configuration Properties#hive.hashtable.initialCapacity

hive.hashtable.loadfactor
  • 默认值:0.75

  • 添加于:Hive 0.7.0 和HIVE-1642

在 Mapjoin 的过程中,键/值将保存在哈希表中。此值表示内存哈希表的负载因子。

hive.debug.localtask
  • 默认值:false

  • 添加于:Hive 0.7.0 和HIVE-1642

hive.outerjoin.supports.filters
  • 默认值:true

  • 添加于:Hive 0.7.0 和HIVE-1534

  • 在以下位置删除:Hive 2.2.0 with HIVE-14522

hive.optimize.skewjoin
  • 默认值:false

  • 添加于:Hive0.6.0

是否启用倾斜连接优化。 (另请参阅 Configuration Properties#hive.optimize.skewjoin.compiletime 。)

hive.skewjoin.key
  • 默认值:100000

  • 添加于:Hive0.6.0

确定我们是否在 Connecting 获得了偏斜键。如果在 join 运算符中看到具有相同键的行数超过指定的数量,则我们认为该键为倾斜连接键。

hive.skewjoin.mapjoin.map.tasks
  • 默认值:10000

  • 添加于:Hive0.6.0

确定在后续 Map 连接作业中用于偏斜连接的 Map 任务的数量。它应与 Configuration Properties#hive.skewjoin.mapjoin.min.split 一起使用以执行细粒度的控制。

hive.skewjoin.mapjoin.min.split
  • 默认值:33554432

  • 添加于:Hive0.6.0

通过指定最小拆分大小,确定在后续 Map 连接作业中用于偏斜连接的最多 Map 任务数。它应与 Configuration Properties#hive.skewjoin.mapjoin.map.tasks 一起使用以执行细粒度的控制。

hive.optimize.skewjoin.compiletime
  • 默认值:false

  • 添加于:Hive0.10.0

是否为联接中的表的倾斜键创建单独的计划。这基于存储在元数据中的倾斜键。在编译时,计划分为不同的联接:一个联接用于倾斜的键,另一个联接用于其余的键。然后,对上面生成的两个联接执行并集。因此,除非两个联接表中都存在相同的倾斜键,否则该倾斜键的联接将作为 Map 端联接执行。

此参数与 Configuration Properties#hive.optimize.skewjoin 的主要区别在于,此参数使用元存储中存储的偏斜信息在编译时自身优化计划。如果元数据中没有偏斜信息,则此参数无效。
hive.optimize.skewjoin.compiletimeConfiguration Properties#hive.optimize.skewjoin 均应设置为 true。 (理想情况下, Configuration Properties#hive.optimize.skewjoin 应该重命名为 *** hive.optimize.skewjoin.runtime** *,但是出于向后兼容的目的,尚未完成。)

如果偏斜信息正确存储在元数据中,则 hive.optimize.skewjoin.compiletime 会更改查询计划以处理该问题,而 Configuration Properties#hive.optimize.skewjoin 将是无操作。

hive.optimize.union.remove
  • 默认值:false

  • 添加于:Hive 0.10.0 和HIVE-3276

是否删除联合并在联合和联合上面的文件接收器之间推动运算符。这样可以避免对联合输出进行额外的扫描。这对于联合查询独立有用,并且在 Configuration Properties#hive.optimize.skewjoin.compiletime 设置为 true 时特别有用,因为会插入额外的联合。

如果 Configuration Properties#hive.merge.mapfilesConfiguration Properties#hive.merge.mapredfiles 中的任何一个设置为 true,则触发合并。如果用户将 Configuration Properties#hive.merge.mapfiles 设置为 true 并将 Configuration Properties#hive.merge.mapredfiles 设置为 false,则想法是 reducer 的数量很少,因此文件的数量仍然很少。但是,通过这种优化,我们可能会大幅增加文件数量。因此,我们积极地合并。

hive.mapred.supports.subdirectories
  • 默认值:false

  • 添加于:Hive 0.10.0 和HIVE-3276

正在运行的 Hadoop 版本是否支持表/分区的子目录。如果 Hadoop 版本支持表/分区的子目录,则可以应用许多 Hive 优化。此支持由MAPREDUCE-1501添加。

hive.mapred.mode
  • Default Value:

  • 配置单元 0.x:nonstrict

    • Hive1.x:nonstrict

    • Hive2.x:strict(HIVE-12413)

  • 添加于:Hive 0.3.0

执行 Hive 操作的模式。在strict模式下,不允许运行某些有风险的查询。例如,阻止了全表扫描(请参阅HIVE-10454),而ORDER BY需要 LIMIT 子句。

hive.exec.script.maxerrsize
  • 默认值:100000

  • 添加于:Hive 0.2.0

允许脚本发出标准错误的最大字节数(每个 map-reduce 任务)。这样可以防止失控的脚本将日志分区填充到最大容量。

hive.script.auto.progress
  • 默认值:false

  • 添加于:Hive 0.4.0

Hive Tranform/Map/Reduce 子句是否应自动将进度信息发送给 TaskTracker,以避免任务由于不活动而被杀死。当脚本输出到 stderr 时,Hive 发送进度信息。此选项无需定期生成 stderr 消息,但用户应谨慎行事,因为这可能会阻止脚本中的无限循环被 TaskTracker 杀死。

hive.exec.script.allow.partial.consumption
  • 默认值:false

  • 添加于:Hive0.5.0

启用后,此选项允许用户脚本成功退出,而无需使用标准 Importing 中的所有数据。

hive.script.operator.id.env.var
  • 默认值:HIVE_SCRIPT_OPERATOR_ID

  • 添加于:Hive0.5.0

环境变量的名称,该环境变量在用户的转换函数(用户在查询中指定的自定义 Map 器/化简器)中包含唯一的脚本运算符 ID。

hive.script.operator.env.blacklist
  • 默认值:hive.txn.valid.txns,hive.script.operator.env.blacklist

  • 新增于:Hive 0.14.0 with HIVE-8341

默认情况下,HiveConf 对象中的所有值都将转换为与键名称相同的环境变量(将“.”(点)转换为“ _”(下划线)),并设置为脚本运算符环境的一部分。但是,某些值可能会变大或不适合转换为环境变量。此值提供用逗号分隔的配置值列表,在调用脚本操作符时不会在环境中设置这些配置值。默认情况下,有效的transaction列表会被排除,因为它可能会变大并且有时会被压缩,从而无法很好地转换为环境变量。

Also see:
hive.exec.compress.output
  • 默认值:false

  • 添加于:Hive 0.2.0

这控制是否对查询的最终输出(到本地/ hdfs 文件或 Hive 表)进行压缩。压缩编解码器和其他选项由 Hadoop 配置变量 mapred.output.compress *确定。

hive.exec.compress.intermediate
  • 默认值:false

  • 添加于:Hive 0.2.0

这可控制是否压缩 Hive 在多个 map-reduce 作业之间生成的中间文件。压缩编解码器和其他选项由 Hadoop 配置变量 mapred.output.compress *确定。

hive.exec.parallel
  • 默认值:false

  • 添加于:Hive0.5.0

是否并行执行作业。适用于可以并行运行的 MapReduce 作业,例如,在连接之前处理不同源表的作业。从Hive 0.14开始,也适用于可并行运行的移动任务,例如,在多插入期间移动文件以插入目标。

hive.exec.parallel.thread.number
  • 默认值:8

  • 添加于:Hive0.6.0

最多可以并行执行多少个作业。

hive.exec.rowoffset
  • 默认值:false

  • 添加于:Hive 0.8.0

是否提供行偏移虚拟列。

hive.task.progress
  • 默认值:false

  • 添加于:Hive0.5.0

  • 删除于:Hive 0.13.0 with HIVE-4518

Hive 是否应在执行期间定期更新任务进度计数器。启用此功能可以在作业跟踪器中更紧密地监视任务进度,但可能会导致性能下降。对于 Configuration Properties#hive.exec.dynamic.partition 设置为 true 的作业,此标志自动设置为 true。 (此配置属性在版本 0.13.0 中已删除.)

hive.counters.group.name
  • 默认值:HIVE

  • 新增于:Hive 0.13.0 with HIVE-4518

查询执行期间使用的计数器的计数器组名称。计数器组用于内部 Hive 变量(CREATED_FILE,FATAL_ERROR 等)。

hive.exec.pre.hooks
  • 默认值:(空)

  • 添加于:Hive 0.4.0

将为每个语句调用的逗号分隔的预执行钩子列表。将预执行钩子指定为实现 org.apache.hadoop.hive.ql.hooks.ExecuteWithHookContext 接口的 Java 类的名称。

hive.exec.post.hooks
  • 默认值:(空)

  • 添加于:Hive0.5.0

将为每个语句调用的逗号分隔的执行后钩子列表。将执行后钩子指定为实现 org.apache.hadoop.hive.ql.hooks.ExecuteWithHookContext 接口的 Java 类的名称。

hive.exec.failure.hooks
  • 默认值:(空)

  • 添加于:Hive 0.8.0

每个语句要调用的逗号分隔的失败挂接列表。将失败时钩子指定为实现 org.apache.hadoop.hive.ql.hooks.ExecuteWithHookContext 接口的 Java 类的名称。

hive.merge.mapfiles
  • 默认值:true

  • 添加于:Hive 0.4.0

在仅 Map 作业的末尾合并小文件。

hive.merge.mapredfiles
  • 默认值:false

  • 添加于:Hive 0.4.0

在 map-reduce 作业结束时合并小文件。

hive.mergejob.maponly
  • 默认值:true

  • 添加于:Hive0.6.0

  • 在以下位置删除:Hive 0.11.0

如果支持 CombineHiveInputFormat,请尝试生成用于合并文件的仅 Map 作业。 (此配置属性在版本 0.11.0 中已删除.)

hive.merge.size.per.task
  • 默认值:256000000

  • 添加于:Hive 0.4.0

作业结束时合并文件的大小。

hive.merge.smallfiles.avgsize
  • 默认值:16000000

  • 添加于:Hive0.5.0

当作业的平均输出文件大小小于此数目时,Hive 将启动另一个 map-reduce 作业以将输出文件合并为更大的文件。如果 hive.merge.mapfiles 为 true,则仅对仅 Map 作业执行此操作;如果 hive.merge.mapredfiles 为 true,则仅对 map-reduce 作业执行此操作。

hive.heartbeat.interval
  • 默认值:1000

  • 添加于:Hive 0.4.0

在此间隔之后发送心跳-由 mapjoin 和 filter 运算符使用。

hive.auto.convert.join
  • 默认值:false in 0.7.0 to 0.10.0; true在 0.11.0 及更高版本中(HIVE-3297)

  • HIVE-1642中添加:0.7.0

Hive 是否启用基于 Importing 文件大小的有关将普通联接转换为 mapjoin 的优化。 (请注意,hive-default.xml.template 在 Hive 0.11.0 到 0.13.1 中错误地将默认值设置为 false.)

hive.auto.convert.join.noconditionaltask
  • 默认值:true

  • 新增:带有HIVE-3784的 0.11.0(带有HIVE-4146的默认值更改为 true)

Hive 是否启用基于 Importing 文件大小的有关将普通联接转换为 mapjoin 的优化。如果启用此参数,并且 n 路联接的 n-1 个表/分区的大小总和小于 hive.auto.convert.join.noconditionaltask.size 指定的大小,则直接转换联接到 mapjoin(没有条件任务)。

hive.auto.convert.join.noconditionaltask.size
  • 默认值:10000000

  • 添加于:0.11.0 和HIVE-3784

如果关闭 hive.auto.convert.join.noconditionaltask,则此参数无效。但是,如果启用了该连接,并且 n 向联接的表/分区的 n-1 个大小的总和小于此大小,则该联接将直接转换为 mapjoin(没有条件任务)。默认值为 10MB。

hive.auto.convert.join.use.nonstaged
  • 默认值:false

  • 添加到:0.13.0 和HIVE-6144(默认为true,但在 0.13.0 中也更改为falseHIVE-6749)

对于条件联接,如果可以将来自小别名的 Importing 流直接应用到联接运算符,而无需进行过滤或投影,则无需通过 Map 的本地任务在分布式缓存中预备别名。当前,这不适用于矢量化或 Tez 执行引擎。

hive.merge.nway.joins
  • 默认值:true

  • 新增于:2.2.0 with HIVE-15655

对于相同条件下的多个联接,将联接合并在一起成为单个联接运算符。在进行大型混洗连接以避免重新混洗阶段时,这很有用。在 Tez 中禁用此选项通常会在左侧外部联接或常规 Snowflake 模式的情况下提供更快的联接算法。

hive.udtf.auto.progress
  • 默认值:false

  • 添加于:Hive0.5.0

使用 UDTF 时,Hive 是否应自动将进度信息发送给 TaskTracker,以防止任务由于不活动而被杀死。用户应保持谨慎,因为这可能会阻止 TaskTracker 终止具有无限循环的任务。

hive.mapred.reduce.tasks.speculative.execution
  • 默认值:true

  • 添加于:Hive0.5.0

是否应该对减速器进行投机执行。

hive.exec.counters.pull.interval
  • 默认值:1000

  • 添加于:Hive0.6.0

轮询 JobTracker 以获取计数器的时间间隔。越小,作业跟踪器上的负载就越大,捕获的粒度就越小。

hive.enforce.bucketing
  • Default Value:

  • 配置单元 0.x:false

    • Hive1.x:false

    • Hive 2.x:已删除,有效地使其始终为真(HIVE-12331)

  • 添加于:Hive0.6.0

是否执行bucketing。如果true,则在插入表时会强制执行存储。

设置为true以支持 Hive 0.14.0 和 1.x.x 中的插入...值,更新和删除个事务。有关打开 HiveTransaction 所需的参数的完整列表,请参阅 Configuration Properties#hive.txn.manager

hive.enforce.sorting
  • Default Value:

  • 配置单元 0.x:false

    • Hive1.x:false

    • Hive 2.x:已删除,有效地使其始终为真(HIVE-12331)

  • 添加于:Hive0.6.0

是否执行排序。如果为 true,则在插入表时会强制进行排序。

hive.optimize.bucketingsorting
  • 默认值:true

  • 添加于:Hive 0.11.0 和HIVE-4240

如果 Configuration Properties#hive.enforce.bucketingConfiguration Properties#hive.enforce.sorting 为 true,则不要创建用于对以下形式的查询执行存储分区/排序的 reducer:

insert overwrite table T2 select * from T1;

其中 T1 和 T2 通过相同的键存储/分类到相同数量的存储桶中。 (在 Hive 2.0.0 和更高版本中,此参数不取决于 Configuration Properties#hive.enforce.bucketingConfiguration Properties#hive.enforce.sorting 。)

hive.optimize.reducededuplication
  • 默认值:true

  • 添加于:Hive0.6.0

如果数据已经由需要再次使用的同一键聚类,则删除多余的 map-reduce 作业。应始终将其设置为 true。由于它是一项新功能,因此已使其可配置。

hive.optimize.reducededuplication.min.reducer
  • 默认值:4

  • 添加于:Hive 0.11.0 和HIVE-2340

减少重复数据删除通过将子 RS 的 key/parts/reducer-num 移到父 RS 来合并两个 RS(“减少接收器运算符*”)。这意味着,如果子 RS 的 reducer-num 固定(按 Sequences 或强制分批排序)且较小,则可能会生成非常慢的单个 MR。如果减速器数量小于指定值,则将禁用优化。

hive.optimize.correlation
  • 默认值:false

  • 添加于:Hive 0.12.0 with HIVE-2206

利用查询内关联。有关详细信息,请参见Correlation Optimizer设计文档。

hive.optimize.limittranspose

是否通过左/右外部联接或联合来施加限制。如果该值为 true,并且外部 Importing 的大小减小到足够的程度(如hive.optimize.limittranspose.reductionpercentagehive.optimize.limittranspose.reductiontuples所指定),则将限制推入外部 Importing 或并集;为了保持语义上正确,限制也保持在联接或联合之上。

hive.optimize.limittranspose.reductionpercentage

hive.optimize.limittranspose为 true 时,此变量指定优化器为应用规则而应获得的联接的外部 Importing 或联合的 Importing 的大小的最小百分比(分数)减小。

hive.optimize.limittranspose.reductiontuples

hive.optimize.limittranspose为 true 时,此变量指定优化程序为应用规则而应获得的联接的外部 Importing 或联合的 Importing 的 Tuples 数量的最小减少量。

hive.optimize.filter.stats.reduction
  • 默认值:false

  • 添加于:Hive 2.1.0 和HIVE-13269

是否在使用列统计信息的过滤器运算符中简化比较表达式。

hive.optimize.sort.dynamic.partition
  • 默认值:Hive 0.13.0 和 0.13.1 中的true; Hive 0.14.0 及更高版本中的false(HIVE-8151)

  • 新增于:Hive 0.13.0 with HIVE-6455

启用后,动态分区列将进行全局排序。这样,我们就只能为精简器中的每个分区值保持一个记录写入器打开,从而减少精简器上的内存压力。

hive.cbo.enable

设置为 true 时,将启用使用 Calcite 框架的基于成本的优化器

hive.cbo.returnpath.hiveop

如果为 true,则此对 CBO 逻辑计划的优化将添加规则以对联接键引入* not null *过滤。控制方解石计划到 Hive 运算符的转换。设置为 false 时,覆盖 hive.optimize.remove.identity.project。

hive.cbo.cnf.maxnodes
  • 默认值:-1

  • 添加于:Hive 2.1.1 和HIVE-14021

转换为合取范式(CNF)时,如果表达式超过指定的阈值,则失败;阈值以节点(叶和内部节点)的数量表示。默认值为-1,不设置阈值。

hive.optimize.null.scan
  • 默认值:true

  • 新增于:Hive 0.14.0 with HIVE-7385

设为 true 时,此优化将尝试不扫描表中的任何行,这些行可以在查询编译时确定为不生成任何行(例如,其中 1 = 2,其中 false,限制 0 等)。

hive.exec.dynamic.partition
  • 默认值:Hive 0.9.0 之前的false; Hive 0.9.0 及更高版本中的true(HIVE-2835)

  • 添加于:Hive0.6.0

在 DML/DDL 中是否允许dynamic partitions

hive.exec.dynamic.partition.mode
  • 默认值:strict

  • 添加于:Hive0.6.0

strict模式下,用户必须至少指定一个静态分区,以防用户意外覆盖所有分区。在nonstrict模式下,所有分区均允许为dynamic

设置为nonstrict以支持插入...值,更新和删除个事务(Hive 0.14.0 及更高版本)。有关打开 HiveTransaction 所需的参数的完整列表,请参阅 Configuration Properties#hive.txn.manager

hive.exec.max.dynamic.partitions
  • 默认值:1000

  • 添加于:Hive0.6.0

总共最多可以创建dynamic partitions个。

hive.exec.max.dynamic.partitions.pernode
  • 默认值:100

  • 添加于:Hive0.6.0

每个 Map 器/化简器节点中允许创建的最大dynamic partitions个数。

hive.exec.max.created.files
  • 默认值:100000

  • 添加于:Hive 0.7.0

MapReduce 作业中所有 Map 器/还原器创建的 HDFS 文件的最大数量。

hive.exec.default.partition.name
  • 默认值:__HIVE_DEFAULT_PARTITION__

  • 添加于:Hive0.6.0

如果动态分区列的值为空/空字符串或任何其他无法转义的值,则为默认分区名称。此值不得包含 HDFS URI 中使用的任何特殊字符(例如':','%','/'等)。用户必须注意,动态分区值不应包含该值,以免造成混淆。

hive.fetch.output.serde
  • 默认值:org.apache.hadoop.hive.serde2.DelimitedJSONSerDe

  • 添加于:Hive 0.7.0

FetchTask 使用的 SerDe 序列化提取输出。

hive.exec.mode.local.auto
  • 默认值:false

  • 添加于:Hive 0.7.0 和HIVE-1408

让 Hive 确定是否自动以本地模式运行。

hive.exec.mode.local.auto.inputbytes.max
  • 默认值:134217728

  • 添加于:Hive 0.7.0 和HIVE-1408

Configuration Properties#hive.exec.mode.local.auto 为 true 时,对于本地模式,Importing 字节应小于此值。

hive.exec.mode.local.auto.tasks.max

Configuration Properties#hive.exec.mode.local.auto 为 true 时,对于本地模式,任务数应少于此数目。在 Hive 0.9.0 中替换为 Configuration Properties#hive.exec.mode.local.auto.input.files.max.

hive.exec.mode.local.auto.input.files.max
  • 默认值:4

  • 添加到:Hive 0.9.0 和HIVE-2651

Configuration Properties#hive.exec.mode.local.auto 为 true 时,对于本地模式,任务数应少于此数目。

hive.exec.drop.ignorenonexistent

如果 DROP TABLE/VIEW/PARTITION/INDEX/TEMPORARY FUNCTION 指定了不存在的表/视图,请不要报告错误。从 Hive 0.13.0 开始也适用于permanent functions

hive.exec.show.job.failure.debug.info
  • 默认值:true

  • 添加于:Hive 0.7.0

如果作业失败,是否在 CLI 中提供指向失败次数最多的任务的链接,以及调试提示(如果适用)。

hive.auto.progress.timeout
  • 默认值:0

  • 添加于:Hive 0.7.0

脚本/ UDTF 运算符运行自动进度器的时间(以秒为单位)。永远设为 0.

hive.table.parameters.default
  • 默认值:(空)

  • 添加于:Hive 0.7.0

新建表的默认属性值。

hive.variable.substitute
  • 默认值:true

  • 添加于:Hive 0.7.0

这样可以使用${var} ${system:var}和${env:var}这样的语法启用substitution

hive.error.on.empty.partition
  • 默认值:false

  • 添加于:Hive 0.7.0

如果动态分区插入生成空结果,是否引发异常。

hive.exim.uri.scheme.whitelist
  • 预设值:Hive 2.2.0 之前的hdfs,pfile; Hive 2.2.0 及更高版本中的hdfs,pfile,file

  • 添加于:Hive 0.8.0 中带有HIVE-1918;在 Hive 2.2.0 中使用HIVE-15151更改了默认设置

以逗号分隔的用于导入和导出的可接受 URI 方案列表。

hive.limit.row.max.size
  • 默认值:100000

  • 添加于:Hive 0.8.0

为简单的 LIMIT 尝试使用较小的数据子集时,我们需要保证每行至少有多少大小。

hive.limit.optimize.limit.file
  • 默认值:10

  • 添加于:Hive 0.8.0

当尝试使用较小的数据子集进行简单的 LIMIT(限制)时,我们可以采样的最大文件数。

hive.limit.optimize.enable
  • 默认值:false

  • 添加于:Hive 0.8.0

是否启用优化以首先尝试简单 LIMIT 的较小数据子集。

hive.limit.optimize.fetch.max
  • 默认值:50000

  • 添加于:Hive 0.8.0

如果是提取查询,则简单 LIMIT 的较小数据子集所允许的最大行数。插入查询不受此限制的限制。

hive.rework.mapredwork
  • 默认值:false

  • 添加于:Hive 0.8.0

是否应该返工 Map 的工作。 SymlinkTextInputFormat 首先引入了此功能,以便在编译时用实际路径替换符号链接文件。

hive.sample.seednumber
  • 默认值:0

  • 添加于:Hive 0.8.0

用于百分比采样的数字。通过更改此数字,用户将更改采样数据的子集。

hive.autogen.columnalias.prefix.label
  • 默认值:_c

  • 添加于:Hive 0.8.0

自动生成列别名时用作前缀的字符串。默认情况下,前缀标签将附加列位置编号以形成列别名。如果在没有显式别名的 select 子句中使用聚合函数,则会发生自动生成。

hive.autogen.columnalias.prefix.includefuncname
  • 默认值:false

  • 添加于:Hive 0.8.0

是否在 Hive 自动生成的列别名中包括函数名称。

hive.exec.perf.logger
  • 默认值:org.apache.hadoop.hive.ql.log.PerfLogger

  • 添加于:Hive 0.8.0

类负责记录 Client 端性能 Metrics。必须是 org.apache.hadoop.hive.ql.log.PerfLogger 的子类。

hive.start.cleanup.scratchdir
  • 默认值:false

  • 添加到:Hive 0.8.1 中带有HIVE-2181

  • 修正于:Hive 1.3.0 with HIVE-10415

在启动 Hive 服务器(或 HiveServer2)时清理 Hive scratch directory。对于多用户环境,这不是一个选项,因为它会意外删除正在使用的暂存目录。

hive.scratchdir.lock
  • 默认值:false

  • 新增内容:带有HIVE-13429的 Hive 1.3.0 和 2.1.0(但不是 2.0.x)

为 true 时,在草稿目录中保留一个锁定文件。如果一个 Hive 进程死了,并且不小心留下了一个悬空的暂存目录,则cleardanglingscratchdir tool将其删除。

如果为 false,则不会创建锁定文件,因此cleardanglingscratchdir tool无法删除任何悬空的暂存目录。

hive.output.file.extension
  • 默认值:(空)

  • 添加于:Hive 0.8.1

字符串,用作输出文件的文件 extensions。如果未设置,则默认为文本文件的编解码器 extensions(例如“ .gz”),否则为无 extensions。

hive.insert.into.multilevel.dirs
  • 默认值:false

  • 添加于:Hive 0.8.1

是否插入到多层嵌套目录中,例如“从表中插入目录'/ HIVEFT25686/chinna /'”。

插入不存在的嵌套目录时,可能会显示以下错误:
*错误 org.apache.hadoop.hive.ql.exec。任务:失败,异常无法重命名:\ *

要启用自动子目录生成,请设置“ hive.insert.into.multilevel.dirs = true”

hive.conf.validation
  • 默认值:true

  • 添加于:Hive 0.10.0 和HIVE-2848

为注册的 Hive 配置启用类型检查。

从 Hive 0.14.0(HIVE-7211)开始,配置名称以“ hive”开头。被视为 Hive 系统属性。如果 hive.conf.validation 为 true(默认值),则任何尝试设置以“ hive”开头的配置属性的尝试。未注册到 Hive 系统的文件将引发异常。

hive.fetch.task.conversion
  • 默认值:Hive 0.10.0 至 0.13.1 中的minimal,Hive 0.14.0 及更高版本中的more

  • 添加于:Hive 0.10.0 和HIVE-2925;在 Hive 0.14.0 中使用HIVE-7397更改了默认设置

某些选择查询可以转换为单个 FETCH 任务,从而最大程度地减少了 await 时间。当前,查询应该是单源的,不包含任何子查询,并且不应该具有任何聚合或区分(这会引起 RS – ReduceSinkOperator,需要 MapReduce 任务),横向视图和联接。

支持的值是 none,minimalmore

  1. none:禁用 hive.fetch.task.conversion(在 Hive 0.14.0 中使用HIVE-8389添加的值)
  2. minimal:SELECT *,分区列(WHERE 和 HAVING 子句)上的 FILTER,仅 LIMIT
  3. more:仅 SELECT,FILTER,LIMIT(包括 TABLESAMPLE,虚拟列)

more”可以在 SELECT 子句中采用任何类型的表达式,包括 UDF。
(尚不支持 UDTF 和侧视图–参见HIVE-5718。)

hive.map.groupby.sorted
  • Default Value:

  • 配置单元 0.x 和 1.x:false

  • 添加于:Hive 0.10.0 和HIVE-3432

如果表的存储/排序属性与分组键完全匹配,则是否通过使用 BucketizedHiveInputFormat 在 Map 器中执行分组依据。唯一的缺点是它将 Map 器的数量限制为文件的数量。

hive.map.groupby.sorted.testmode
  • 默认值:false

  • 添加于:Hive 0.11.0 和HIVE-4281

  • 删除于:Hive 2.0.0 with HIVE-12325

如果表的存储/排序属性与分组键完全匹配,则是否通过使用 BucketizedHiveInputFormat 在 Map 器中执行分组依据。如果设置了测试模式,则不会转换计划,但会将查询属性设置为表示该计划。 (此配置属性在 2.0.0 版中已删除.)

hive.groupby.orderby.position.alias
  • 默认值:false

  • 添加于:Hive 0.11.0 和HIVE-581

  • 弃用于:Hive 2.2.0 with HIVE-15797

是否在查询的GROUP BYORDER BY子句中启用使用列位置别名(自 Hive 2.2.0 起不推荐使用;改为使用Configuration Properties#hive.groupby.position.aliasConfiguration Properties#hive.orderby.position.alias)。

hive.groupby.position.alias
  • 默认值:false

  • 内建于:Hive 2.2.0 with HIVE-15797

是否在GROUP BY中启用使用列位置别名。

hive.orderby.position.alias
  • 默认值:true

  • 内建于:Hive 2.2.0 with HIVE-15797

是否在ORDER BY中启用使用列位置别名。

hive.fetch.task.aggr
  • 默认值:false

  • 添加于:具有HIVE-4002的 Hive 0.12.0(具有HIVE-5793的 Hive 0.13.0 中添加了说明)

没有 group-by 子句的聚合查询(例如select count(*) from src)在单个 reduce 任务中执行最终聚合。如果此参数设置为true,则 Hive 将最后的聚合阶段委派给提取任务,这可能会减少查询时间。

hive.fetch.task.conversion.threshold
  • 默认值:Hive 0.13.0 和 0.13.1 中的-1,Hive 0.14.0 和更高版本中的1073741824(1 GB)

  • 添加于:Hive 0.13.0 中带有HIVE-3990;在 Hive 0.14.0 中使用HIVE-7397更改了默认设置

应用hive.fetch.task.conversion的 Importing 阈值(以字节为单位)。如果目标表是本地表,则 Importing 长度是通过文件长度的总和来计算的。如果不是本地的,则表的存储处理程序可以选择实现 org.apache.hadoop.hive.ql.metadata.InputEstimator 接口。负阈值装置hive.fetch.task.conversion被应用而没有任何 Importing 长度阈值。

hive.limit.pushdown.memory.usage
  • 默认值:-1

  • 添加于:Hive 0.12.0 with HIVE-3562

RS 运算符中用于前 K 个选择的哈希中使用的最大内存。默认值“ -1”表示没有限制。

hive.cache.expr.evaluation
  • 默认值:true

  • 添加于:Hive 0.12.0 with HIVE-4209

  • 错误修复:Hive 0.14.0 和HIVE-7314(在另一个 UDF 或 Hive 函数中使用 UDF 时,表达式缓存不起作用)

如果为 true,将缓存两次或更多次引用的确定性表达式的求值结果。例如,在类似“ ...,其中键 10> 10 或键 10 = 0”的过滤条件中,表达式“键 10”将被评估/缓存一次,并重新用于以下表达式(“键 10 = 0”)。当前,这仅适用于 select 或 filter 运算符中的表达式。

hive.resultset.use.unique.column.names
  • 默认值:true

  • 新增于:Hive 0.13.0 with HIVE-6687

如果需要,通过使用表别名限定列名,使结果集中的列名唯一。对于“选择*”类型的查询,或者如果查询明确使用表别名“选择 r1.x ..”,则将表别名添加到列名中。

hive.support.quoted.identifiers
  • 默认值:column

  • 新增于:Hive 0.13.0 with HIVE-6013

是否使用带引号的标识符。值可以是“ none”或“ column”。

column:列名可以包含任何 Unicode 字符。反引号(``'')中指定的任何列名均按字面意义对待。在反引号字符串中,使用双反引号(````)表示反引号字符。
none:标识符中仅字母数字和下划线字符有效。带反引号的名称被解释为正则表达式。这也是 0.13.0 之前的版本中的行为。

hive.plan.serialization.format
  • 默认值:kryo

  • 新增于:Hive 0.13.0 with HIVE-1511

  • 删除了一个值:不再支持带有HIVE-12609的 Hive 2.0.0 javaXML

Client 端和任务节点之间的查询计划格式序列化。支持的两个值是kryojavaXML(在 Hive 2.0.0 之前)。 Kryo 是默认设置(从 Hive 2.0.0 开始,Kryo 是唯一受支持的值)。

hive.exec.check.crossproducts
  • 默认值:true

  • 新增于:Hive 0.13.0 with HIVE-6643

检查查询计划是否包含交叉产品。如果有一个,则向会话的控制台输出警告。

hive.display.partition.cols.separately
  • 默认值:true

  • 新增于:Hive 0.13.0 with HIVE-6689

在较旧的 Hive 版本(0.10 和更早版本)中,在DESCRIBE TABLE中显示列时,没有区分分区列或非分区列。从版本 0.12 开始,它们分别显示。如果需要,此标志将使您获得旧的行为。参见HIVE-6689 修补程序中的测试用例。

hive.limit.query.max.table.partition

为了保护群集,这控制了每个分区表可以扫描多少个分区。默认值“ -1”表示没有限制。分区限制不影响仅元数据查询。

hive.files.umask.value

已淘汰:Hive 创建的文件夹的dfs.umask值。

hive.optimize.sampling.orderby
  • 默认值:false

  • 添加于:Hive 0.12.0 with HIVE-1402

对 order-by 子句使用采样以并行执行。

hive.optimize.sampling.orderby.number
  • 默认值:1000

  • 添加于:Hive 0.12.0 with HIVE-1402

使用 hive.optimize.sampling.orderby = true 时,要获得用于计算分区键的 samples 总数。

hive.optimize.sampling.orderby.percent
  • 默认值:0.1

  • 添加于:Hive 0.12.0 with HIVE-1402

使用 hive.optimize.sampling.orderby = true 时,选择行的概率。

hive.compat
  • 默认值:0.12

  • 新增于:Hive 0.13.0 with HIVE-6012

通过设置所需的向后兼容性级别,启用(可配置)不赞成使用的算术运算行为。默认值为数字运算提供了向后兼容的返回类型。其他受支持的发行版号为数字运算提供了新的行为,例如 0.13 给出了HIVE-5356中引入的更多与 SQL 兼容的返回类型。

值“最新”指定最新的支持级别。当前,这仅影响整数的除法。

设置为 0.12(默认值)可保持 Hive 0.12 和更早版本的除法行为:int/int = double。
设置为 0.13 可在 Hive 0.13 和更高版本中进行除法运算:int/int =十进制。

无效的设置将导致错误消息,并且将使用默认支持级别。

hive.optimize.constant.propagation
  • 默认值:true

  • 新增于:Hive 0.14.0 with HIVE-5771

是否启用constant propagation优化器。

hive.entity.capture.transform

启用捕获转换 URI 的编译器读取实体,可以在语义和 exec 钩子中进行内部检查。

hive.support.sql11.reserved.keywords
  • 默认值:true

  • 新增于:Hive 1.2.0 with HIVE-6617

是否启用对 SQL2011 保留关键字的支持。启用后,将支持 SQL2011 reserved keywords(的一部分)。

hive.log.explain.output

启用后,将在 log4j INFO 级别和 HiveServer2 WebUI/Drilldown/Query Plan 中记录查询的EXPLAIN EXTENDED输出。

Hive 3.1.0开始,此配置属性仅记录到 log4j INFO。要从 Hive 3.1.0 开始将EXPLAIN EXTENDED输出记录在 WebUI /深入查询/查询计划中,请使用 Configuration Properties#hive.server2.webui.explain.output

hive.explain.user
  • 默认值:false

  • 新增于:Hive 1.2.0 with HIVE-9780

是否在用户级别显示解释结果。启用后,将在用户级别记录查询的 EXPLAIN 输出。 (仅限 Tez.有关 Spark,请参见hive.spark.explain.user。)

hive.typecheck.on.insert
  • 默认值:true

  • 添加于:Hive 0.12.0,带有HIVE-5297的插入分区

  • 扩展于:Hive 1.2 和HIVE-10307进行更改,描述分区等。

是否检查,转换和规范化分区规范中指定的分区值以符合分区列类型。

hive.exec.temporary.table.storage
  • 默认值:default

  • 添加于:Hive 1.1.0 和HIVE-7313

期望[+695++696++697+]中的一个。

定义temporary tables的存储策略。在内存,ssd 和默认值之间选择。参见HDFS 存储类型和存储策略

hive.optimize.distinct.rewrite
  • 默认值:true

  • 新增于:Hive 1.2.0 with HIVE-10568

如果适用,此优化会将distinct aggregates从单阶段聚合重写为多阶段聚合。这并非在所有情况下都是最佳的。理想情况下,是否触发它应该是基于成本的决策。在 Hive 为此确定成本模型之前,这是配置驱动的。

hive.optimize.point.lookup
  • 默认值:true

  • 新增于:Hive 2.0.0 with HIVE-11461

是否将 Filter 运算符中的 OR 子句转换为 IN 子句。

hive.optimize.point.lookup.min
  • 默认值:31

  • 新增于:Hive 2.0.0 with HIVE-11573

转换为 IN 子句所需的 OR 子句的最小数量。

hive.allow.udf.load.on.demand
  • 默认值:false

  • 添加于:Hive 2.1.0 和HIVE-13596

是否启用按需从 metastore 加载 UDF;这与 HS2 最为相关,并且是 Hive 1.2 之前的默认行为。

hive.async.log.enabled
  • 默认值:true

  • 添加于:Hive 2.1.0 和HIVE-13027

是否启用 Log4j2 的异步日志记录。异步日志记录可以显着提高性能,因为日志记录将在单独的线程中处理,该线程使用 LMAX 干扰者队列来缓冲日志消息。

有关优缺点,请参见https://logging.apache.org/log4j/2.x/manual/async.html

hive.msck.repair.batch.size
  • 默认值:0

  • 内建于:Hive 2.2.0 with HIVE-12077

批量运行MSCK 维修台命令。如果存在大量未跟踪的分区,则通过为属性配置一个值,它将在内部批量执行。该属性的默认值为零,这意味着它将立即执行所有分区。

hive.exec.copyfile.maxnumfiles
  • 默认值:1

  • 新增于:Hive 2.3.0 with HIVE-14864

Hive 在目录之间进行 SequencesHDFS 复制所使用的最大文件数。分布式副本(distcp)将代替大量文件使用,以便可以更快地完成副本。

hive.exec.copyfile.maxsize
  • 预设值:32 MB

  • 添加于:Hive 1.1.0 和HIVE-8750

Hive 在目录之间执行单个 HDFS 复制的最大文件大小(以字节为单位)。对于较大的文件,将使用分布式副本(distcp),以便可以更快地完成副本。

hive.exec.stagingdir
  • 默认值:.hive-staging

  • 在 Hive1.1.0 和HIVE-8750中添加

将在表位置内部创建的目录名称,以支持 HDFS 加密。除只读表外,它用hive.exec.scratchdir代替查询结果。在所有情况下hive.exec.scratchdir仍用于其他临时文件,例如工作计划。

hive.query.lifetime.hooks
  • 默认值:(空)

  • 新增于:Hive 2.3.0 with HIVE-14340

用逗号分隔的实现 QueryLifeTimeHook 的钩子列表。这些将在查询编译之前/之后以及查询执行之前/之后按照指定的 Sequences 触发。从 Hive 3.0.0(HIVE-16363)开始,此配置可用于指定 QueryLifeTimeHookWithParseHooks 的实现。如果指定了它们,则它们将在与 QueryLifeTimeHooks 相同的位置被调用,并将在查询前后解析期间被调用。

hive.remove.orderby.in.subquery
  • 默认值:true

  • 添加于:Hive 3.0.0 with HIVE-6348

如果设置为 true,则子查询和视图中的排序/排序不受限制。

SerDes 和 I/O

SerDes

hive.script.serde
  • 默认值:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe

  • 添加于:Hive 0.4.0

用于向用户脚本传输 Importing 数据和从用户脚本读取输出数据的默认 SerDe。

hive.script.recordreader
  • 默认值:org.apache.hadoop.hive.ql.exec.TextRecordReader

  • 添加于:Hive 0.4.0

用于从用户脚本读取数据的默认记录读取器。

hive.script.recordwriter
  • 默认值:org.apache.hadoop.hive.ql.exec.TextRecordWriter

  • 添加于:Hive0.5.0

用于将数据写入用户脚本的默认记录编写器。

hive.default.serde
  • 默认值:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe

  • 添加于:Hive 0.14 中带有HIVE-5976

默认的 SerDe Hive 将用于未指定 SerDe 的存储格式。当前未指定 SerDe 的存储格式包括'TextFile,RcFile'。

有关存储格式和 SerDes 的更多信息,请参见本地 SerDes 的注册

hive.lazysimple.extended_boolean_literal
  • 默认值:false

  • 添加于:Hive 0.14 中带有HIVE-3635

LazySimpleSerDe使用此属性来确定除'TRUE'和'FALSE'外,是否还将'T','t','F','f','1'和'0'视为扩展的合法布尔 Literals。 。默认值为false,这意味着只有'TRUE'和'FALSE'被视为合法的布尔 Literals。

I/O

hive.io.exception.handlers
  • 默认值:(空)

  • 添加于:Hive 0.8.1

I/O 异常处理程序类名称的列表。这用于构造一个异常处理程序列表,以处理记录读取器引发的异常。

hive.input.format
  • 默认值:org.apache.hadoop.hive.ql.io.CombineHiveInputFormat

  • 添加于:Hive0.5.0

默认 Importing 格式。如果遇到 CombineHiveInputFormat 问题,请将其设置为 HiveInputFormat。

Also see:

File Formats

hive.default.fileformat
  • 默认值:TextFile

  • 添加于:Hive 0.2.0

CREATE TABLE 语句的默认文件格式。选项是 TextFile,SequenceFile,RCfile,ORC 和 Parquet。

用户可以明确地说出CREATE TABLE ...存储为 TEXTFILE | SEQUENCEFILE | RCFILE | ORC | AVRO | INPUTFORMAT ... OUTPUTFORMAT ...来覆盖。 (在 Hive 0.6.0 中添加了 RCFILE,在 0.11.0 中添加了 ORC,在 0.14.0 中添加了 AVRO,在 2.3.0 中添加了 Parquet)。有关详细信息,请参见行格式,存储格式和 SerDe

hive.default.fileformat.managed
  • 默认值:none

  • 新增于:Hive 1.2.0 with HIVE-9915

CREATE TABLE 语句的默认文件格式仅适用于托管表。外部表将以Configuration Properties#hive.default.fileformat指定的格式创建。选项为 none,TextFile,SequenceFile,RCfile,ORC 和 Parquet(自 Hive 2.3.0 起)。保留此 null 将导致对所有本机表使用 hive.default.fileformat。对于 nonlocal 表,文件格式由存储处理程序确定,如下所示(有关托管/外部和本地/nonlocal 术语的更多信息,请参见StorageHandlers部分)。

Native Non-Native
Managed hive.default.fileformat.managed(或回退到 hive.default.fileformat) 默认文件格式未涵盖
External hive.default.fileformat 默认文件格式未涵盖
hive.fileformat.check
  • 默认值:true

  • 添加于:Hive0.5.0

加载数据文件时是否检查文件格式。

hive.query.result.fileformat
  • Default Value:

  • 配置单元 0.x,1.x 和 2.0:TextFile

    • Hive 2.1 及更高版本:SequenceFile
  • 添加于:Hive 0.7.0 和HIVE-1598

用于查询中间结果的文件格式。选项是 TextFile,SequenceFile 和 RCfile。从 Hive 2.1.0(HIVE-1608)开始,默认值更改为 SequenceFile。

RCFile Format

hive.io.rcfile.record.interval
  • 默认值:2147483647

  • 添加于:Hive 0.4.0 和HIVE-352;在 Hive 0.14.0 中使用HIVE-7211添加到 HiveConf.java

hive.io.rcfile.column.number.conf
  • 默认值:0

  • 添加于:Hive 0.4.0 和HIVE-352;在 Hive 0.14.0 中使用HIVE-7211添加到 HiveConf.java

hive.io.rcfile.tolerate.corruptions
  • 默认值:false

  • 添加于:Hive 0.4.0 和HIVE-352;在 Hive 0.14.0 中使用HIVE-7211添加到 HiveConf.java

hive.io.rcfile.record.buffer.size
  • 默认值:4194304

  • 添加于:Hive 0.4.0 和HIVE-352;在 Hive 0.14.0 中使用HIVE-7211添加到 HiveConf.java

ORC 文件格式

ORC 文件格式是在Hive 0.11.0中引入的。有关详情,请参见ORC Files

除了本节中列出的配置属性外,其他部分中的某些属性也与 ORC 有关:

hive.exec.orc.memory.pool
  • 默认值:0.5

  • 添加于:Hive 0.11.0 和HIVE-4248

ORC 文件编写器可以使用的最大堆分数。

hive.exec.orc.write.format
  • 默认值:(空)

  • 添加于:Hive 0.12.0 中带有HIVE-4123;默认值由HIVE-5091从 0.11 更改为 null(也在 Hive 0.12.0 中)

定义要写入的文件的版本。可能的值为 0.11 和 0.12. 如果未定义此参数,则 ORC 将使用 Hive 0.12 中引入的游程编码(RLE)。除 0.11 以外的任何值都将导致 0.12 编码。

将来可能会引入其他值(请参阅HIVE-6002)。

hive.exec.orc.base.delta.ratio
  • 默认值:8

  • 添加于:Hive 1.3.0 和 2.1.0,带有HIVE-13563

根据 STRIPE_SIZE 和 BUFFER_SIZE 定义基本写入器和增量写入器的比率。

hive.exec.orc.default.stripe.size
  • 预设值:0.13.0 中的256*1024*1024(268,435,456);
    64*1024*1024(67,108,864)in 0.14.0

  • 添加于:Hive 0.13.0 中带有HIVE-5425;默认值在 0.14.0 中使用HIVE-7231HIVE-7490进行了更改

定义默认的 ORC 条带大小(以字节为单位)。

hive.exec.orc.default.block.size
  • 默认值:256*1024*1024(268,435,456)

  • 新增于:Hive 0.14.0 with HIVE-7231

定义 ORC 文件的默认文件系统块大小。

hive.exec.orc.dictionary.key.size.threshold
  • 默认值:0.8

  • 添加于:Hive 0.12.0 with HIVE-4324

如果字典中的键数大于非空行总数的此分数,请关闭字典编码。使用 1 始终使用字典编码。

hive.exec.orc.default.row.index.stride
  • 默认值:10000

  • 新增于:Hive 0.13.0 with HIVE-5728

定义默认的 ORC 索引步长(以行数为单位)。 (* Stride *是索引条目代表的行数.)

hive.exec.orc.default.buffer.size
  • 默认值:256*1024(262,144)

  • 新增于:Hive 0.13.0 with HIVE-5728

定义默认的 ORC 缓冲区大小(以字节为单位)。

hive.exec.orc.default.block.padding
  • 默认值:true

  • 新增于:Hive 0.13.0 with HIVE-5728

定义默认的块填充。 Hive 0.12.0 中添加了块填充(HIVE-5091,“ ORC 文件应具有将条带填充到 HDFS 块边界的选项”)。

hive.exec.orc.block.padding.tolerance
  • 默认值:0.05

  • 新增于:Hive 0.14.0 with HIVE-7231

将块填充的公差定义为条带大小的小数部分(例如,默认值 0.05 是条带大小的 5%)。对于默认的 64Mb ORC 条带和 256Mb HDFS 块,将在默认 hive.exec.orc.block.padding.tolerance 的情况下为 256Mb 块中的填充最多保留 3.2Mb。在这种情况下,如果块中的可用大小大于 3.2Mb,将插入一个新的较小条带以适合该空间。这将确保没有写入的条带跨越块边界并导致节点本地任务内的远程读取。

hive.exec.orc.default.compress
  • 默认值:ZLIB

  • 新增于:Hive 0.13.0 with HIVE-5728

定义 ORC 文件的默认压缩编解码器。

hive.exec.orc.encoding.strategy
  • 默认值:SPEED

  • 新增于:Hive 0.14.0 with HIVE-7219

定义写入数据时要使用的编码策略。更改此设置只会影响整数的轻量级编码。该标志不会更改更高级别压缩编解码器(如 ZLIB)的压缩级别。可能的选项是“速度”和“压缩”。

hive.orc.splits.include.file.footer

如果启用,由ORC生成的拆分将在文件中包含有关条纹的元数据。可以从 Client 端或 HiveServer2 计算机上远程读取此数据,并将其发送到所有任务。

hive.orc.cache.stripe.details.size

用于保留有关 Client 端中缓存的ORC拆分的元信息的缓存大小。

hive.orc.cache.use.soft.references
  • 默认值:false

  • 添加于:Hive 1.3.0,Hive 2.1.1,带有HIVE-13985的 Hive 2.2.0

默认情况下,ORCImporting 格式用于存储 ORC 文件页脚的缓存将硬引用用于缓存的对象。将其设置为 true 可以帮助避免在内存压力下(在某些情况下)内存不足的问题,但总的查询性能会有些不确定。

hive.io.sarg.cache.max.weight.mb
  • 默认值:10

  • 添加于:Hive 2.2.1,Hive 2.3.1,Hive 2.4.0,Hive 3.0.0 和HIVE-17669

SearchArgument 缓存允许的最大权重,以兆字节为单位。默认情况下,缓存允许的最大权重为 10MB,之后将逐出条目。设置为 0,将完全禁用 SearchArgument 缓存。

hive.orc.compute.splits.num.threads

ORC应该使用多少个线程来并行创建拆分。

hive.exec.orc.split.strategy
  • 默认值:HYBRID

  • 新增于:Hive 1.2.0 with HIVE-10114

ORC应该使用什么策略来创建要执行的拆分。可用选项为“ BI”,“ ETL”和“ HYBRID”。

如果文件数少于预期的 Map 器数,则 HYBRID 模式将读取所有文件的页脚;如果平均文件大小小于默认的 HDFS 块大小,则切换为每个文件生成 1 个拆分。 ETL 策略始终在生成拆分之前先读取 ORC 页脚,而 BI 策略无需从 HDFS 读取任何数据即可快速生成每个文件的拆分。

hive.exec.orc.skip.corrupt.data
  • 默认值:false

  • 新增于:Hive 0.13.0 with HIVE-6382

如果 ORC 读取器遇到损坏的数据,则此值将用于确定是跳过损坏的数据还是引发异常。默认行为是引发异常。

hive.exec.orc.zerocopy

将零拷贝读取与 ORC 一起使用。 (这需要 Hadoop 2.3 或更高版本.)

hive.merge.orcfile.stripe.level
  • 默认值:true

  • 新增于:Hive 0.14.0 with HIVE-7509

当在编写具有 ORC 文件格式的表时启用 Configuration Properties#hive.merge.mapfilesConfiguration Properties#hive.merge.mapredfilesConfiguration Properties#hive.merge.tezfiles 时,启用此配置属性将对小型 ORC 文件执行条带级快速合并。请注意,启用此配置属性将不支持填充公差配置( Configuration Properties#hive.exec.orc.block.padding.tolerance )。

hive.orc.row.index.stride.dictionary.check
  • 默认值:true

  • 新增于:Hive 0.14.0 with HIVE-7832

如果启用了字典检查,则将在第一行索引 Span(默认为 10000 行)之后进行,否则,字典检查将在写入第一条带之前进行。在这两种情况下,是否保留字典的决定都将保留。

hive.exec.orc.compression.strategy
  • 默认值:SPEED

  • 新增于:Hive 0.14.0 with HIVE-7859

定义写入数据时要使用的压缩策略。这会更改更高级别压缩编解码器(如 ZLIB)的压缩级别。

值可以是SPEEDCOMPRESSION

Parquet

Hive 0.10、0.11 和 0.12 中的插件支持 Parquet,而 Hive 0.13 和更高版本中本机支持。有关详情,请参见Parquet

hive.parquet.timestamp.skip.conversion
  • 默认值:true

  • 新增于:Hive 1.2.0 with HIVE-9482

在 3.1.2 之前的 Hive 实现中,Parquet 的时间戳存储在 UTC 上,该标志允许跳过读取其他工具创建的 Parquet 文件时的转换。

Avro

有关详情,请参见AvroSerDe

hive.avro.timestamp.skip.conversion
  • 默认值:false

  • 新增于:Hive 3.1.2 with HIVE-21291

一些较早的 Hive 实现(3.1.2 之前的版本)以 UTC 标准化的方式编写了 Avro 时间戳,而从版本 3.1.0 到 3.1.2 为止,Hive 编写了与时区无关的时间戳。
将此标志设置为 true 会将旧时间戳记视为时区不可知的。将其设置为 false 会将旧时间戳记视为 UTC 规范化。
此标志不会影响从 Hive 3.1.2 开始编写的时间戳,这些时间戳实际上是时区不可知的(有关详细信息,请参见HIVE-21002)。
注意:此属性将影响对使用 Kafka 表中的 AvroSerDe 和时间戳(在有效负载/ Avro 文件中,与 Kafka 时间戳无关)的 HBase 文件进行反序列化的方式–请记住,使用 AvroSerDe 序列化的时间戳将在过程中进行 UTC 标准化序列化。因此,如果使用 HBase 或 Kafka,则将此属性保留为 false。

Vectorization

Hive 在版本 0.13.0(HIVE-4160HIVE-5283)中添加了矢量化查询执行。有关更多信息,请参见设计文档向量化查询执行

hive.vectorized.execution.enabled
  • 默认值:false

  • 新增于:Hive 0.13.0 with HIVE-5283

此标志应设置为 true 以启用查询执行的矢量化模式。默认值为 false。

hive.vectorized.execution.reduce.enabled
  • 默认值:true

  • 新增于:Hive 0.14.0 with HIVE-7405

此标志应设置为 true 以启用查询执行的减少端的矢量化模式。默认值是 true。

hive.vectorized.execution.reduce.groupby.enabled
  • 默认值:true

  • 新增于:Hive 0.14.0 with HIVE-8052

该标志应设置为 true 以启用化简方式 GROUP BY 查询执行的矢量化模式。默认值是 true。

hive.vectorized.execution.reducesink.new.enabled
  • 默认值:true

  • 新增于:Hive 2.0.0 with HIVE-12290

该标志应设置为 true,以启用使用 ReduceSink 进行的新的查询矢量化。

hive.vectorized.execution.mapjoin.native.enabled
  • 默认值:true

  • 新增于:Hive 1.2.0 with HIVE-9824

此标志应设置为 true,以启用使用 MapJoin 进行的本地(即非直通)查询矢量化。

hive.vectorized.execution.mapjoin.native.multikey.only.enabled
  • 默认值:false

  • 新增于:Hive 1.2.0 with HIVE-9824

此标志应设置为 true,以限制在使用 MapJoin 的查询中将本机向量 Map 联接哈希表限制用于 MultiKey。

hive.vectorized.execution.mapjoin.minmax.enabled
  • 默认值:false

  • 新增于:Hive 1.2.0 with HIVE-9824

此标志应设置为 true,以使矢量 Map 联接哈希表能够使用 MapJoin 对整数联接查询使用 max/max 过滤。

hive.vectorized.execution.mapjoin.overflow.repeated.threshold
  • 默认值:-1

  • 新增于:Hive 1.2.0 with HIVE-9824

向量 Map 联接哈希表中匹配项的小表行数,其中我们使用溢出向量化行批处理中的重复字段优化对使用 MapJoin 的联接查询。值-1表示确实使用联接结果优化。否则,阈值可以是 0 到最大整数。

hive.vectorized.execution.mapjoin.native.fast.hashtable.enabled
  • 默认值:false

  • 新增于:Hive 1.2.0 with HIVE-9824

此标志应设置为 true,以允许在使用 MapJoin 的查询中使用本机快速矢量 Map 联接哈希表。

hive.vectorized.groupby.checkinterval
  • 默认值:100000

  • 新增于:Hive 0.13.0 with HIVE-5692

在对平均条目大小进行重新计算之前,添加到 GROUP BY 聚合哈希中的条目数。

hive.vectorized.groupby.maxentries
  • 默认值:1000000

  • 新增于:Hive 0.13.0 with HIVE-5692

向量 GROUP BY 聚合哈希表中的最大条目数。超过此阈值将触发冲洗,无论内存压力条件如何。

hive.vectorized.use.vectorized.input.format
  • 默认值:true

  • 添加于:Hive 2.1.0 和HIVE-12878

此标志应设置为 true,以允许 Hive 利用支持矢量化的 Importing 格式。默认值是 true。

hive.vectorized.use.vector.serde.deserialize
  • 默认值:false

  • 添加于:Hive 2.1.0 和HIVE-12878

此标志应设置为 true 以启用使用矢量反序列化矢量化行。默认值为 false。

hive.vectorized.use.row.serde.deserialize
  • 默认值:false

  • 添加于:Hive 2.1.0 和HIVE-12878

此标志应设置为 true 以启用使用行反序列化进行矢量化。默认值为 false。

hive.vectorized.input.format.excludes
  • 默认值:(空)

  • 在带有HIVE-17534的 Hive 2.4.0 中添加

此标志应用于提供以逗号分隔的完全合格的类名列表,以使用向量化文件 inputformat 从向量化执行中排除某些 FileInputFormat。请注意,根据是否启用了 Configuration Properties#hive.vectorized.use.vector.serde.deserializeConfiguration Properties#hive.vectorized.use.row.serde.deserialize ,对于该 Importing 格式仍可能发生矢量化执行。

MetaStore

除了本节中列出的 Hive Metastore 属性外,其他部分中还列出了一些属性:

hive.metastore.local
  • 默认值:true

  • 添加于:Hive 0.8.1

  • 删除于:Hive 0.10 with HIVE-2585

控制是连接到远程元存储服务器还是在 Hive Client JVM 中打开新的元存储服务器。从 Hive 0.10 开始,此功能不再使用。相反,如果设置了 hive.metastore.uris ,则假定remote模式,否则为local

hive.metastore.uri.selection
  • 默认值:RANDOM

  • 添加于:Hive 3.0.0

确定 MetastoreClient 端用于连接到远程 Metastore 的选择机制。 SEQUENTIAL 表示将从指定为 hive.metastore.uris 的 URI 中选择第一个有效的元存储区。 RANDOM 表示将随机选择元存储。

javax.jdo.option.ConnectionURL
  • 默认值:jdbc:derby:;databaseName=metastore_db;create=true

  • 添加于:Hive0.6.0

JDBC metastore 的 JDBC 连接字符串。

javax.jdo.option.ConnectionDriverName
  • 默认值:org.apache.derby.jdbc.EmbeddedDriver

  • 添加于:Hive 0.8.1

JDBC 元存储库的驱动程序类名称。

javax.jdo.PersistenceManagerFactoryClass
  • 默认值:org.datanucleus.jdo.JDOPersistenceManagerFactory

  • 添加于:Hive 0.8.1

实现 JDO PersistenceManagerFactory 的类。

javax.jdo.option.DetachAllOnCommit
  • 默认值:true

  • 添加于:Hive 0.8.1

从会话中分离所有对象,以便在提交事务后可以使用它们。

javax.jdo.option.NonTransactionalRead
  • 默认值:true

  • 添加于:Hive 0.8.1

在事务之外读取。

javax.jdo.option.ConnectionUserName
  • 默认值:APP

  • 添加于:Hive 0.8.1

用于 Metastore 数据库的用户名。

javax.jdo.option.ConnectionPassword
  • 默认值:mine

  • 添加于:Hive 0.3.0

用于 Metastore 数据库的密码。

有关其他配置,请参见从 Hive 配置中删除 Hive Metastore 密码

javax.jdo.option.Multithreaded
  • 默认值:true

  • 添加于:Hive 0.8.0

如果多个线程同时通过 JDO 访问 metastore,请将其设置为 true。

datanucleus.connectionPoolingType
  • 默认值:Hive 0.7 至 0.11 中的 DBCP; BoneCP 在 0.12 到 2.3 之间; 3.0 及更高版本中的 HikariCP

  • 添加于:Hive 0.7.0

从 3.0 发行版(HIVE-16383)开始,将 HikariCP 连接池用于 JDBC metastore。

在版本 0.12 至 2.3(HIVE-4807)中将 BoneCP 连接池用于 JDBC 元存储,在版本 0.7 至 0.11 中将 DBCP 连接池使用。

从 Hive 2.2.0(HIVE-13159)开始,此参数也可以设置为none

datanucleus.connectionPool.maxPoolSize
  • 默认值:10

  • 添加于:Hive 3.0.0

指定连接池中的最大连接数。

注意:配置的大小将由 2 个连接池(TxnHandler 和 ObjectStore)使用。

配置最大连接池大小时,建议考虑元存储实例的数量和 HiveServer2 实例的数量

配置了嵌入式 metastore。为了获得最佳性能,请将配置设置为满足以下条件

(2 * pool_size * metastore_instances 2 * pool_size * HS2_instances_with_embedded_metastore)=(2 * physical_core_count hard_disk_count)。

datanucleus.validateTables

根据代码验证现有架构。如果要验证现有架构,请启用此功能。

datanucleus.schema.validateTables

根据代码验证现有架构。如果要验证现有架构,请启用此功能。

datanucleus.validateColumns

根据代码验证现有架构。如果要验证现有架构,请启用此功能。

datanucleus.schema.validateColumns

根据代码验证现有架构。如果要验证现有架构,请启用此功能。

datanucleus.validateConstraints

根据代码验证现有架构。如果要验证现有架构,请启用此功能。

datanucleus.schema.validateConstraints

根据代码验证现有架构。如果要验证现有架构,请启用此功能。

datanucleus.storeManagerType
  • 默认值:rdbms

  • 添加于:Hive 0.7.0

元数据存储类型。

datanucleus.fixedDatastore
  • Default Value:

  • 配置单元 0.x:false

    • Hive1.x:false
  • 添加于:Hive 0.12.0 with HIVE-3764

  • 删除于:Hive 2.0.0 with HIVE-6113

指示是否允许更新架构。

datanucleus.autoCreateSchema

如果启动中不存在,则在启动时创建必要的架构。创建一次后,将其设置为 false。

在 Hive 0.12.0 和更高版本中,如果 Configuration Properties#hive.metastore.schema.verificationtrue,则 datanucleus.autoCreateSchema 被禁用。

datanucleus.schema.autoCreateAll

如果启动中不存在,则在启动时创建必要的架构。创建一次后,将其重置为 false。

如果 Configuration Properties#hive.metastore.schema.verificationtrue,则禁用 datanucleus.schema.autoCreateAll **。

datanucleus.autoStartMechanismMode
  • 默认值:checked

  • 添加于:Hive 0.7.0

如果元数据表不正确,则引发异常。

datanucleus.transactionIsolation
  • 默认值:read-committed

  • 添加于:Hive 0.7.0

用于标识生成的默认事务隔离级别。

datanucleus.cache.level2
  • 默认值:false

  • 添加于:Hive 0.7.0

此参数不执行任何操作。
*警告说明:*对于大多数安装,Hive 不应启用 DataNucleus L2 缓存,因为这可能导致正确性问题。因此,有些人在假定禁用缓存的情况下将此参数设置为 false-不幸的是,它没有禁用缓存。要实际禁用缓存,请将 Configuration Properties#datanucleus.cache.level2.type 设置为“ none”。

datanucleus.cache.level2.type
  • 默认值:Hive 0.9 及更高版本中的none;HiveSOFT在 0.7 到 0.8.1

  • 添加于:Hive 0.7.0

NONE =禁用数据核 2 级缓存,SOFT =基于软引用的缓存,WEAK =基于弱引用的缓存。
*警告说明:*对于大多数 Hive 安装,启用数据核缓存可能导致正确性问题,并且很危险。应将其保留为“无”。

datanucleus.identifierFactory
  • 默认值:datanucleus

  • 添加于:Hive 0.7.0

生成表/列名称等时要使用的标识符工厂的名称。“ datanucleus”用于向后兼容。

datanucleus.plugin.pluginRegistryBundleCheck
  • 默认值:LOG

  • 添加于:Hive 0.7.0

定义当发现并重复插件束时发生的情况:EXCEPTION,LOG 或 NONE。

hive.metastore.warehouse.dir
  • 默认值:/user/hive/warehouse

  • 添加于:Hive 0.2.0

仓库的默认数据库的位置。

hive.warehouse.subdir.inherit.perms
  • 默认值:false

  • 添加到:Hive 0.9.0 和HIVE-2504

  • 删除于:Hive 3.0.0 with HIVE-16392

如果表目录应该继承仓库或数据库目录的权限而不是使用从 dfs umask 派生的权限创建,则将其设置为 true。 (此配置属性在发布 Hive 0.9.0 之前替换了 Configuration Properties#hive.files.umask.value )(此配置属性在 3.0.0 版中已删除,更多详细信息在Hive 中的权限继承中)

该标志的行为在HIVE-6892和 sub-JIRA 的 Hive-0.14.0 中进行了更改。 Hive 中的权限继承中有更多详细信息。

hive.metastore.execute.setugi
  • 默认值:从 Hive 0.8.1 到 0.13.0 的false,从 Hive 0.14.0 开始的true

  • 新增于:Hive 0.8.1 和HIVE-2616,默认设置在 Hive 0.14.0 和HIVE-6903

在不安全模式下,如果为 true,则将导致 metastore 使用 Client 端报告的用户和组权限执行 DFS 操作。请注意,必须在 Client 端和服务器端都设置此属性。还要注意,这是最大的努力。如果 Client 端将其设置为 true,而服务器将其设置为 false,则 Client 端设置将被忽略。

hive.metastore.event.listeners
  • 默认值:(空)

  • 添加于:Hive 0.8.0 和HIVE-2038

Metastore 事件的逗号分隔侦听器列表。

hive.metastore.partition.inherit.table.properties
  • 默认值:(空)

  • 添加于:Hive 0.8.1

表属性中出现的逗号分隔键的列表,这些键将继承到新创建的分区。 *表示所有键都将被继承。

hive.metastore.end.function.listeners
  • 默认值:(空)

  • 添加于:Hive 0.8.1

Metastore 函数结尾的逗号分隔的侦听器列表。

hive.metastore.event.expiry.duration
  • 默认值:0

  • 添加于:Hive 0.8.0

事件在事件表中过期之前的持续时间(以秒为单位)。

hive.metastore.event.clean.freq
  • 默认值:0

  • 添加于:Hive 0.8.0

计时器任务运行以清除 metastore 中过期事件的频率(以秒为单位)。

hive.metastore.connect.retries
  • 默认值:3

  • 添加于:Hive0.6.0

打开与 Metastore 的连接时的重试次数。

hive.metastore.client.connect.retry.delay
  • 默认值:1

  • 添加于:Hive 0.7.0

Client 端在连续的连接尝试之间 await 的秒数。

hive.metastore.client.socket.timeout
  • 预设值:Hive 0.7 至 0.13.1 中的20; Hive 0.14.0 及更高版本中的600

  • 添加于:Hive 0.7.0;默认值在 Hive 0.14.0 中使用HIVE-7140更改

MetaStoreClient 端套接字超时(以秒为单位)。

hive.metastore.rawstore.impl
  • 默认值:org.apache.hadoop.hive.metastore.ObjectStore

  • 添加于:Hive 0.8.1

实现 org.apache.hadoop.hive.metastore.rawstore 接口的类的名称。此类用于存储和检索原始元数据对象,例如表,数据库。

从 Hive 3.0 开始,有两种实现。默认实现(ObjectStore)直接查询数据库。 HIVE-16520引入了新的CachedStore(全类名是org.apache.hadoop.hive.metastore.cache.CachedStore),该缓存将检索到的对象缓存在 Metastore 的内存中。

metastore.cached.rawstore.impl
  • 默认值:org.apache.hadoop.hive.metastore.ObjectStore

  • 在以下组件中添加:Hive 3.0

如果您使用的是 CachedStore,则这是要使用的包装的 RawStore 类的名称。

metastore.cached.rawstore.cache.update.frequency
  • 默认值:60

  • 在 Hive 3.0.0 中添加

从 metastore DB 更新 metastore 缓存之后的时间(以秒为单位)。

metastore.cached.rawstore.cached.object.whitelist
  • 默认值: .*

  • 在 Hive 3.0.0 中添加

用逗号分隔的正则表达式列表,以选择将由 CachedStore 缓存的表(及其分区,统计信息等)。可以与hive.metastore.cached.rawstore.cached.object.blacklist结合使用。

示例:.*, db1.*, db2\.tbl.*.最后一项可能会覆盖之前指定的模式。

metastore.cached.rawstore.cached.object.blacklist
  • 默认值:(空)

  • 在 Hive 3.0.0 中添加

用逗号分隔的正则表达式列表,以过滤掉将由 CachedStore 缓存的表(及其分区,统计信息等)。可以与hive.metastore.cached.rawstore.cached.object.whitelist结合使用。

示例:db2.*, db3\.tbl1, db3\..*.最后一项可能会覆盖之前指定的模式。

metastore.cached.rawstore.max.cache.memory
  • 默认值:1gb

  • 在 Hive 3.0.0 中添加

高速缓存的对象可以使用的最大内存(以字节为单位)。使用的内存是根据缓存中表和分区的估计大小来计算的。将其设置为负值将禁用内存估计。

hive.metastore.batch.retrieve.max
  • 默认值:300

  • 添加于:Hive 0.8.0

可以从 metastore 一批中检索最大数量的对象(表/分区)。数量越大,Hive Metastore 服务器所需的往返次数就越少,但是这也可能导致 Client 端的内存需求更高。

hive.metastore.ds.connection.url.hook
  • 默认值:(空)

  • 添加于:Hive0.6.0

用于检索 JDO 连接 URL 的钩子的名称。如果为空,则使用 javax.jdo.option.ConnectionURL 中的值。

hive.metastore.ds.retry.attempts
  • 默认值:1

  • 添加于:Hive0.6.0

如果存在连接错误,重试 Metastore 调用的次数。

hive.metastore.ds.retry.interval
  • 默认值:1000

  • 添加于:Hive0.6.0

Metastore 重试尝试之间的毫秒数。

hive.metastore.server.min.threads
  • 默认值:200

  • 添加于:Hive 0.6.0 和HIVE-1270

Thrift 服务器池中的最小工作线程数。

hive.metastore.server.max.threads
  • Default Value:

  • 配置单元 0.x 和 1.0.x:100000

    • Hive 1.1.0 及更高版本:1000(HIVE-8666)
  • 添加于:Hive 0.6.0 和HIVE-1270

Thrift 服务器池中的最大工作线程数。

hive.metastore.server.max.message.size
  • 默认值:100*1024*1024

  • 内建于:带有HIVE-8680的 Hive 1.1.0(已移植到 Hive 1.0.2)

Hive Metastore 接受的最大消息大小(以字节为单位)。

hive.metastore.server.tcp.keepalive
  • 默认值:true

  • 添加于:Hive0.6.0

是否为元存储服务器启用 TCP keepalive。 Keepalive 将阻止半开连接的累积。

hive.metastore.sasl.enabled
  • 默认值:false

  • 添加于:Hive 0.7.0

如果为 true,则将使用 SASL 保护 metastore 旧版接口。Client 端必须使用 Kerberos 进行身份验证。

hive.metastore.kerberos.keytab.file
  • 默认值:(空)

  • 添加于:Hive 0.7.0

Kerberos Keytab 文件的路径,该文件包含 Metastore 旧服务器的服务主体。

hive.metastore.kerberos.principal
  • 默认值:hive-metastore/_HOST@EXAMPLE.COM

  • 添加于:Hive 0.7.0

Metastore 旧服务器的服务主体。特殊字符串_HOST 将自动替换为正确的主机名。

注意:此主体由 metastore 进程用于与其他服务进行身份验证(例如,用于 HDFS 操作)。

hive.metastore.client.kerberos.principal
  • 默认值:(空)

  • 添加于:Hive 2.2.1、2.4.0(HIVE-17489)

Hive 元存储库的面向 Client 端的 Kerberos 服务主体。如果未设置,则默认为hive.metastore.kerberos.principal设置的值,以实现向后兼容。

另请参见hive.server2.authentication.client.kerberos.principal

hive.metastore.cache.pinobjtypes
  • 默认值:Table,StorageDescriptor,SerDeInfo,Partition,Database,Type,FieldSchema,Order

  • 添加于:Hive 0.7.0

逗号分隔的元存储对象类型列表,应将其固定在缓存中。

hive.metastore.authorization.storage.checks
  • 默认值:false

  • 添加于:Hive 0.8.0

Metastore 是否应针对基础存储进行授权检查,以进行诸如 drop-partition(如果相关用户无权删除存储上的相应目录的权限,则禁止进行 drop-partition)操作。

hive.metastore.thrift.framed.transport.enabled
  • 默认值:false

  • 添加于:Hive 0.10.0 和HIVE-2767

如果为 true,则 metastore Thrift 接口将使用 TFramedTransport。如果为 false(默认),则使用标准的 TTransport。

hive.metastore.schema.verification
  • 默认值:false

  • 添加于:Hive 0.12.0 with HIVE-3764

强制执行 Metastore 模式版本一致性。
True:验证存储在 metastore 中的版本信息是否与 Hive jar 中的版本信息匹配。还禁用自动模式迁移尝试(请参阅 Configuration Properties#datanucleus.autoCreateSchemaConfiguration Properties#datanucleus.schema.autoCreateAll )。 Hive 升级后,要求用户手动迁移架构,以确保正确的 Metastore 架构迁移。
False:如果存储在 metastore 中的版本信息与 Hive jar 中的版本信息不匹配,则发出警告。

有关更多信息,请参见Metastore 模式一致性和升级

hive.metastore.disallow.incompatible.col.type.changes
  • Default Value:

  • 配置单元 0.x 和 1.x:false

  • 添加于:Hive 0.12.0 with HIVE-4409

如果为 true,则不允许将列类型(例如 STRING)更改为不兼容类型(例如 MAP<STRING, STRING>)的 ALTER TABLE 操作。 RCFile 默认的 SerDe(ColumnarSerDe)对值进行序列化,以便可以将数据类型从字符串转换为任何类型。该 Map 还被序列化为字符串,也可以作为字符串读取。但是,对于任何二进制序列化,情况并非如此。随后尝试访问旧分区时,阻塞 ALTER TABLE 可以防止 ClassCastExceptions。

原始类型(例如 INT,STRING,BIGINT 等)彼此兼容,不会被阻塞。

有关更多详细信息,请参见HIVE-4409

hive.metastore.integral.jdo.pushdown
  • 默认值:false

  • 新增于:Hive 0.13.0 with HIVE-6052

允许对 Metastore 中的整体分区列进行 JDO 查询下推。默认关闭。这样可以提高整数列的元存储性能,尤其是在存在大量分区的情况下。但是,它不适用于未标准化的整数值(例如,如果它们的前导零如 0012)。如果启用了元存储区直接 SQL 并可以运行( Configuration Properties#hive.metastore.try.direct.sql ),则此优化也无关紧要。

hive.metastore.try.direct.sql
  • 默认值:true

  • 添加于:Hive 0.12.0 with HIVE-4051

Hive Metastore 是否应为某些读取路径尝试使用直接 SQL 查询而不是 DataNucleus。当按数量级获取许多分区或列统计信息时,这可以提高 metastore 的性能。但是,不能保证可以在所有 RDBMS-es 和所有版本上使用。如果 SQL 失败,则元存储将退回到 DataNucleus,因此即使 SQL 不适用于您的数据存储上的所有查询,它也是安全的。如果所有 SQL 查询都失败(例如,您的元存储由 MongoDB 支持),则可能要禁用此功能以节省尝试后退成本。

可以使用从 Hive 0.14.0(HIVE-7532)开始的“ set metaconf:hive.metastore.try.direct.sql =<value>”命令在每个 Client 端上进行配置。

hive.metastore.try.direct.sql.ddl
  • 默认值:true

  • 新增于:Hive 0.13.0 with HIVE-5626

Configuration Properties#hive.metastore.try.direct.sql 相同,用于修改元存储数据的事务中的读取语句。由于 Postgres 中的非标准行为,如果直接 SQL 选择查询的语法不正确或事务内部类似,则整个事务将失败并且无法回退到 DataNucleus。如果您遇到这种情况,则应禁用在transactions内部使用直接 SQL。

可以使用从 Hive 0.14.0(HIVE-7532)开始的“ set metaconf:hive.metastore.try.direct.sql.ddl =<value>”命令在每个 Client 端上进行配置。

hive.metastore.orm.retrieveMapNullsAsEmptyStrings
  • 默认值:false

  • 添加于:Hive 1.0.0 和HIVE-8485

Thrift 不支持 Map 中的空值,因此从对象关系 Map(ORM)检索的 Map 中存在的任何空值都必须修剪或转换为空字符串。一些支持数据库(例如 Oracle)将空字符串保留为 null,因此需要将此参数设置为true才能撤销该行为。对于其他用户,默认修剪行为是正确的。

hive.direct.sql.max.query.length
  • 默认值:100

  • 新增内容:带有HIVE-12349的 Hive 1.3.0 和 2.1.0(但不是 2.0.x)

直接 SQL 生成的查询字符串的最大大小(以 KB 为单位)。

hive.direct.sql.max.elements.in.clause
  • 默认值:1000

  • 新增内容:带有HIVE-12349的 Hive 1.3.0 和 2.1.0(但不是 2.0.x)

直接 SQL 生成的 IN 子句中的最大值数。一旦超过,它将被分成多个 OR 分隔的 IN 子句。

hive.direct.sql.max.elements.values.clause
  • 默认值:1000

  • 新增内容:带有HIVE-12349的 Hive 1.3.0 和 2.1.0(但不是 2.0.x)

直接 SQL 生成的 INSERT 语句的 VALUES 子句中的最大值数。

hive.metastore.port
  • 默认值:9083

  • 内建于:Hive 1.3.0 with HIVE-9365

Hive Metastore 侦听器端口。

hive.metastore.initial.metadata.count.enabled
  • 默认值:true

  • 添加于:Hive 2.1.0 和HIVE-12628

在 Metastore 启动时为 Metrics 启用元数据计数。

hive.metastore.limit.partition.request
  • 默认值:-1

  • 内建于:Hive 2.2.0 with HIVE-13884

这限制了可以从 Metastore 中为给定表请求的分区数。如果查询试图为每个表获取的分区数超过配置的限制,则不会执行查询。值“ -1”表示无限制。此参数优先于 Configuration Properties#hive.limit.query.max.table.partition (已弃用;在 3.0.0 中已删除)。

hive.metastore.fastpath
  • 默认值:false

  • 新增于:Hive 2.0.0 with HIVE-9453

用于避免元存储中的所有代理和对象副本。请注意,如果设置了此选项,则必须使用本地元存储(hive.metastore.uris必须为空),否则未定义,并且很可能导致不良行为。

hive.metastore.jdbc.max.batch.size
  • 默认值:1000

  • 添加于:Hive 4.0.0 和HIVE-23093

这控制单个 JDBC 批处理语句中最大更新/删除/插入查询数。

Hive Metastore 连接池配置

Hive Metastore 支持多种连接池实现(例如 hikaricp,bonecp,dbcp)。以“ hikari”或“ dbcp”为前缀的配置属性将被 Hive 传播到 Connectionpool 实现中。 Jdbc 连接 URL,用户名,密码和连接池的最大连接数是 exception,必须使用其特殊的 Hive Metastore 配置属性进行配置。

在 Hive 3.0.0 中添加了HIVE-17318HIVE-17319

Hive Metastore HBase

从 2.0.0 版(HIVE-9452)开始为 Hive 开发HBase metastore,但是工作已停止,并且从 3.0.0 版(HIVE-17234)中的 Hive 中删除了代码。

在版本 2.x.x 中为 HBase 元存储创建了更多配置属性-此处未介绍。有关完整列表,请参见关于 HIVE-17234 的文档 Comments

hive.metastore.hbase.cache.size

(此配置属性永远不应该在这里记录,因为该属性在HIVE-9693最初发布之前已被删除。)

hive.metastore.hbase.cache.ttl
  • 默认值:600s

  • 新增于:Hive 2.0.0 with HIVE-9453

  • 删除于:Hive 3.0.0 with HIVE-17234

统计信息项驻留在缓存中的秒数。

hive.metastore.hbase.file.metadata.threads
  • 默认值:1

  • 添加于:Hive 2.1.0 和HIVE-12075

用于在后台读取文件元数据以对其进行缓存的线程数。

HiveServer2

HiveServer2 是在 Hive 0.11.0 中使用HIVE-2935添加的。有关更多信息,请参见HiveServer2 Overview设置 HiveServer2HiveServer2 Clients

除了本节中列出的配置属性外,其他部分中还列出了一些 HiveServer2 属性:

hive.server2.thrift.port
  • 默认值:10000

  • 添加于:Hive 0.11.0 和HIVE-2935

HiveServer2 Thrift 接口的端口号。可以通过设置$ HIVE_SERVER2_THRIFT_PORT 来覆盖。

hive.server2.thrift.bind.host
  • 默认值:localhost

  • 添加于:Hive 0.11.0 和HIVE-2935

绑定要在其上运行 HiveServer2 Thrift 接口的主机。可以通过设置$ HIVE_SERVER2_THRIFT_BIND_HOST 来覆盖。

hive.server2.thrift.min.worker.threads
  • 默认值:5

  • 添加于:Hive 0.11.0 和HIVE-2935

Thrift 工作线程的最小数量。

hive.server2.thrift.max.worker.threads
  • 默认值:在 Hive 0.11.0 中为100,在 Hive 0.12.0 及更高版本中为500

  • 添加于:Hive 0.11.0 中带有HIVE-2935,默认值在 HIVE 0.12.0 中具有HIVE-4617更改

Thrift 工作线程的最大数量。

hive.server2.thrift.worker.keepalive.time
  • 默认值:60

  • 在 Hive0.14.0 和HIVE-7353中添加

空闲的工作线程的保持活动时间(以秒为单位)。当 Worker 数>最小 Worker 数时,多余的线程将在此时间间隔后被杀死。

hive.server2.thrift.max.message.size
  • 默认值:100*1024*1024

  • 在带有HIVE-8680的 Hive 1.1.0(反向移植到 Hive 1.0.2)中添加

HiveServer2 服务器将接受的最大消息大小(以字节为单位)。

hive.server2.authentication
  • 默认值:NONE

  • 添加于:Hive 0.11.0 和HIVE-2935

Client 端身份验证类型。

无:不进行身份验证检查–简单的 SASL 传输
LDAP:基于 LDAP/AD 的身份验证
KERBEROS:Kerberos/GSSAPI 身份验证
自定义:自定义身份验证提供程序(与属性 Configuration Properties#hive.server2.custom.authentication.class 一起使用)
PAM:可插拔身份验证模块(已在HIVE-6466的 Hive 0.13.0 中添加)
NOSASL:原始运输(在 Hive 0.13.0 中添加)

hive.server2.authentication.kerberos.keytab
  • 默认值:(空)

  • 添加于:Hive 0.11.0 和HIVE-2935

服务器主体的 Kerberos 密钥表文件。

hive.server2.authentication.kerberos.principal
  • 默认值:(空)

  • 添加于:Hive 0.11.0 和HIVE-2935

Kerberos 服务器主体。

hive.server2.authentication.client.kerberos.principal
  • 默认值:(空)

  • 添加于:Hive 2.1.1、2.4.0 和HIVE-17489

HA HiveServer2 使用的 Kerberos 服务器主体。另请参见hive.metastore.client.kerberos.principal

hive.server2.custom.authentication.class
  • 默认值:(空)

  • 添加于:Hive 0.11.0 和HIVE-2935

自定义身份验证类。当属性 Configuration Properties#hive.server2.authentication 设置为“ CUSTOM”时使用。提供的类必须是接口 org.apache.hive.service.auth.PasswdAuthenticationProvider 的正确实现。 HiveServer2 将调用其 Authenticate(user,passed)方法对请求进行身份验证。该实现可以选择扩展 Hadoop 的 org.apache.hadoop.conf.Configured 类,以获取 Hive 的 Configuration 对象。

hive.server2.enable.doAs

将此属性设置为 true 将使 HiveServer2 在用户对其进行调用时执行 Hive 操作。

hive.server2.authentication.ldap.url
  • 默认值:(空)

  • 添加于:Hive 0.11.0 和HIVE-2935

LDAP 连接 URL 的值可以是多个 LDAP 服务器的 URL 的空格分隔列表,以实现弹性。按照指定的 Sequences 尝试 URL,直到连接成功。

hive.server2.authentication.ldap.baseDN
  • 默认值:(空)

  • 添加于:Hive 0.11.0 和HIVE-2935

LDAP 基本 DN(专有名称)。

hive.server2.authentication.ldap.guidKey
  • 默认值:uid

  • 添加于:Hive 2.1.0 和HIVE-13295

此属性指示在为 LDAP 连接构建 bindDN 时(仅使用 baseDN 时)使用什么前缀。因此,bindDN 将为“<guidKey> =<user/group>,\ ”。如果在配置中使用了 userDNPattern 和/或 groupDNPattern,则不需要 guidKey。仅在使用 baseDN 时主要需要。

hive.server2.authentication.ldap.Domain
  • 默认值:(空)

  • 添加于:Hive 0.12.0 with HIVE-4707

LDAP domain.

hive.server2.authentication.ldap.groupDNPattern
  • 默认值:(空)

  • 新增于:Hive 1.3 with HIVE-7193

用冒号分隔的字符串模式列表,代表 LDAP 组的基本 DN。在要插入实际组名的地方使用“%s”。有关详细信息,请参见Group Membership

一种字符串模式的示例:* uid =%s,OU = Groups,DC = apache,DC = org *

hive.server2.authentication.ldap.groupFilter
  • 默认值:(空)

  • 新增于:Hive 1.3 with HIVE-7193

用户必须属于(至少一个组)用户应以逗号分隔的组名列表,以使身份验证成功。有关详情,请参见Group Membership

hive.server2.authentication.ldap.groupMembershipKey

组对象上的 LDAP 属性名称,其中包含作为组成员的用户,组和联系人对象的可分辨名称的列表。例如:member,uniqueMember 或 memberUid。

查找特定用户所属的 LDAP 组名称时,在 LDAP 搜索查询中使用此属性。此属性指示的 LDAP 属性的值应为用户的完整 DN 或简短的用户名或用户 ID。例如,包含“成员:uid = fooUser,ou = Users,dc = domain,dc = com”的“ fooGroup”的组条目将有助于确定“ fooUser”属于 LDAP 组“ fooGroup”。

有关详细示例,请参见Group Membership

如果自定义配置的 LDAP 查询返回的是用户组(而不是用户)(自Hive 2.1.1起),则也可以使用此属性来查找用户。有关详细信息,请参见自定义 LDAP 查询中对组的支持

hive.server2.authentication.ldap.userMembershipKey
  • 默认值:null

  • 内建于:Hive 2.2.0 with HIVE-15076

用户对象上的 LDAP 属性名称,其中包含用户是直接成员的组(主要组除外),主要组由 primaryGroupId 表示。例如:memberOf。

hive.server2.authentication.ldap.groupClassKey
  • 默认值:groupOfNames

  • 新增于:Hive 1.3 with HIVE-13295

LDAP 搜索查询中使用此属性来查找用户所属的 LDAP 组名称。此属性的值用于构造 LDAP 组搜索查询,并用于指示组的 objectClass 是什么。每个 LDAP 组都有特定的 objectClass。例如:group,groupOfNames,groupOfUniqueNames 等。

有关详细示例,请参见Group Membership

hive.server2.authentication.ldap.userDNPattern
  • 默认值:(空)

  • 新增于:Hive 1.3 with HIVE-7193

用冒号分隔的字符串模式列表,代表 LDAP 用户的基本 DN。在要插入实际用户名的位置使用“%s”。有关详细信息,请参见用户搜索列表

一种字符串模式的示例:* uid =%s,OU = Users,DC = apache,DC = org *

hive.server2.authentication.ldap.userFilter
  • 默认值:(空)

  • 新增于:Hive 1.3 with HIVE-7193

如果在 LDAP 中找到用户,则将通过身份验证的用户名的逗号分隔列表。有关详情,请参见用户搜索列表

hive.server2.authentication.ldap.customLDAPQuery
  • 默认值:(空)

  • 新增于:Hive 1.3 with HIVE-7193

用户指定的定制 LDAP 查询,该查询将用于授予/拒绝身份验证请求。如果用户是查询结果集的一部分,则身份验证成功。有关详情,请参见自定义查询字符串

hive.server2.authentication.ldap.binddn
  • 默认值:(空)

  • 添加于:Hive 4.0 with HIVE-21009

指定绑定到 LDAP 进行身份验证时要使用的标准域用户,而不是使用用户本身。这允许所有用户都没有对 LDAP 的搜索权限,而仅要求绑定用户具有搜索权限的方案。

可能值的示例:* uid = binduser,OU = Users,DC = apache,DC = org *

hive.server2.authentication.ldap.bindpw
  • 默认值:(空)

  • 添加于:Hive 4.0 with HIVE-21009

绑定域名的密码。该密码可以直接在配置文件中指定,也可以在群集的凭据提供程序中指定。如果设置了 hive.server2.authentication.ldap.binddn,则必须在某处设置此设置。

hive.server2.global.init.file.location

HiveServer2 全局初始化文件的位置或包含.hiverc 文件的目录。如果设置了属性,则该值必须是指向初始文件或初始文件所在目录的有效路径。

hive.server2.transport.mode

服务器传输模式。值可以是“二进制”或“ http”。

hive.server2.thrift.http.port
  • 默认值:10001

  • 附加在:Hive 0.12.0

处于 HTTP 模式时的端口号。

hive.server2.thrift.http.path

处于 HTTP 模式时 URL 端点的路径组件。

hive.server2.thrift.http.min.worker.threads
  • 默认值:5

  • 附加在:Hive 0.12.0

处于 HTTP 模式时的最小工作线程数。

hive.server2.thrift.http.max.worker.threads
  • 默认值:500

  • 附加在:Hive 0.12.0

处于 HTTP 模式时的最大工作线程数。

hive.server2.thrift.http.max.idle.time
  • 默认值:1800 秒(即 1800 秒)

  • 新增于:HIVE-7169中的 Hive 0.14.0

处于 HTTP 模式时,服务器上连接的最大空闲时间。

hive.server2.thrift.http.worker.keepalive.time
  • 默认值:60

  • 新增于:HIVE-7353中的 Hive 0.14.0

空闲的 http 工作线程的保持活动时间(以秒为单位)。当 Worker 数>最小 Worker 数时,多余的线程将在此时间间隔后被杀死。

hive.server2.thrift.sasl.qop
  • 默认值:auth

  • 附加在:Hive 0.12.0

Sasl QOP 值;将其设置为以下值之一,以为与 Client 端的 HiveServer2 通信启用更高级别的保护。

“ auth” –仅认证(默认)
“ auth-int” –身份验证以及完整性保护
“ auth-conf” –身份验证以及完整性和机密性保护

请注意,在大多数情况下,将 hadoop.rpc.protection 设置为比 HiveServer2 更高的级别是没有意义的。 HiveServer2 忽略 hadoop.rpc.protection,而使用 hive.server2.thrift.sasl.qop。

仅在将 HiveServer2 配置为使用 Kerberos 身份验证时才适用。

hive.server2.async.exec.threads
  • 默认值:在 Hive 0.12.0 中为50,在 Hive 0.13.0 及更高版本中为100

  • 添加于:Hive 0.12.0 中带有HIVE-4617,默认值在 Hive 0.13.0 中具有HIVE-5229更改

HiveServer2 的异步线程池中的线程数。

hive.server2.async.exec.shutdown.timeout
  • 默认值:10

  • 添加于:Hive 0.12.0 with HIVE-4617

HiveServer2 关闭将 await 异步线程终止的时间(以秒为单位)。

hive.server2.table.type.mapping

此设置反映了 HiveServer2 将如何报告 JDBC 和其他 Client 端实现的表类型,这些实现检索可用的表和受支持的表类型。

HIVE:公开 Hive 的本机表类型,例如 MANAGED_TABLE,EXTERNAL_TABLE,VIRTUAL_VIEW
CLASSIC:更通用的类型,例如 TABLE 和 VIEW

hive.server2.session.hook
  • 默认值:(空)

  • 添加于:Hive 0.12.0 with HIVE-4588

HiveServer2 的会话级钩子。

hive.server2.max.start.attempts
  • 默认值:30

  • 新增于:Hive 0.13.0 with HIVE-5794

HiveServer2 在退出之前尝试启动的次数,两次重试之间休眠 60 秒。默认值 30 将 continue 尝试 30 分钟。

hive.server2.async.exec.wait.queue.size
  • 默认值:100

  • 新增于:Hive 0.13.0 with HIVE-5229

HiveServer2 中异步线程池的 await 队列的大小。达到此限制后,异步线程池将拒绝新请求。

hive.server2.async.exec.keepalive.time
  • 默认值:10

  • 新增于:Hive 0.13.0 with HIVE-5229

空闲的 HiveServer2 异步线程(来自线程池)将在终止之前 await 新任务到达的时间(以秒为单位)。

hive.server2.long.polling.timeout
  • 默认值:5000L

  • 新增于:Hive 0.13.0 with HIVE-5217

在响应使用长轮询的异步调用之前,HiveServer2await 的时间(以毫秒为单位)。

hive.server2.allow.user.substitution
  • 默认值:true

  • 添加于:Hive 0.13.0

允许将备用用户指定为 HiveServer2 打开连接请求的一部分。

hive.server2.authentication.spnego.keytab
  • 默认值:(空)

  • 添加于:Hive 0.13.0

SPNEGO 主体的密钥表文件,可选。典型值看起来像/etc/security/keytabs/spnego.service.keytab。启用 Kerberos 安全性并使用 HTTP 传输模式时,HiveServer2 将使用此密钥表。仅当在身份验证中使用 SPNEGO 时才需要设置。

仅当指定有效的 hive.server2.authentication.spnego.principalhive.server2.authentication.spnego.keytab 时,才会接受 SPNEGO 身份验证。

hive.server2.authentication.spnego.principal
  • 默认值:(空)

  • 添加于:Hive 0.13.0

SPNEGO 服务主体,可选。典型值看起来像HTTP/_HOST@EXAMPLE.COM。当启用 Kerberos 安全性并使用 HTTP 传输模式时,HiveServer2 将使用 SPNEGO 服务主体。仅当在身份验证中使用 SPNEGO 时才需要设置。

hive.server2.authentication.pam.services
  • 默认值:(空)

  • 新增于:Hive 0.13.0 with HIVE-6466

Configuration Properties#hive.server2.authentication 类型为 PAM 时应使用的基础 PAM 服务的列表。 /etc/pam.d 中必须存在同名文件。

hive.server2.use.SSL
  • 默认值:false

  • 新增于:Hive 0.13.0 with HIVE-5351

为在 HiveServer2 中使用 SSL 加密将其设置为 true。

hive.server2.keystore.path
  • 默认值:(空)

  • 新增于:Hive 0.13.0 with HIVE-5351

SSL 证书密钥库位置。

hive.server2.keystore.password
  • 默认值:(空)

  • 新增于:Hive 0.13.0 with HIVE-5351

SSL 证书密钥库密码。

hive.server2.tez.default.queues
  • 默认值:(空)

  • 新增于:Hive 0.13.0 with HIVE-6325

与相同名称的 YARN 队列相对应的逗号分隔值列表。在 Tez 模式下启动 HiveServer2 时,需要为多个 Tez 会话设置此配置,以便在群集上并行运行。

hive.server2.tez.sessions.per.default.queue
  • 默认值:1

  • 新增于:Hive 0.13.0 with HIVE-6325

一个正整数,确定应在 Configuration Properties#hive.server2.tez.default.queues 指定的每个队列上启动的 Tez 会话数。确定每个队列上的并行性。

hive.server2.tez.initialize.default.sessions
  • 默认值:false

  • 新增于:Hive 0.13.0 with HIVE-6325

在 HiveServer 2 中使用此标志可以使用户无需打开 HiveServer 2 的 Tez 即可使用 HiveServer2.用户可能希望在没有会话池的情况下通过 Tez 运行查询。

hive.server2.session.check.interval
  • Default Value:

  • 配置单元 0.x,1.0.x,1.1.x,1.2.0:0ms

    • 配置单元 1.2.1,1.3,2.x:6h(HIVE-9842)
  • 新增于:Hive 0.14.0 with HIVE-5799

会话/操作超时的检查间隔,可以将其设置为零或负值来禁用。

hive.server2.idle.session.timeout
  • Default Value:

  • 配置单元 0.x,1.0.x,1.1.x,1.2.0:0ms

  • 新增于:Hive 0.14.0 with HIVE-5799

如果将hive.server2.session.check.interval设置为正时间值,则在此时间段内未访问会话时,会话将关闭,可以将其设置为零或负值来禁用该会话。

hive.server2.idle.operation.timeout
  • 默认值:0ms

  • 新增于:Hive 0.14.0 with HIVE-5799

如果将hive.server2.session.check.interval设置为正时间值,则在此时间段内未访问操作时,操作将关闭,可以通过将其设置为零来禁用该操作。

如果值为正,则仅在终端状态(完成,取消,关闭,错误)下检查操作。
值为负时,将检查所有操作,无论状态如何。

hive.server2.logging.operation.enabled

设置为 true 时,HiveServer2 将保存操作日志并将其提供给 Client 端。

hive.server2.logging.operation.log.location
  • 默认值:${java.io.tmpdir}/${user.name}/operation_logs

  • 新增于:Hive 0.14.0 with HIVE-4629

如果启用了日志记录功能,则存储操作日志的顶级目录。

hive.server2.logging.operation.verbose
  • 默认值:false

  • 新增于:Hive 0.14.0 with HIVE-8785

  • 在以下位置删除:Hive 1.2.0 with HIVE-10119

true时,可用于 Client 端的 HiveServer2 操作日志将非常详细。在 Hive 1.2.0 中由hive.server2.logging.operation.level代替。

hive.server2.logging.operation.level
  • 默认值:EXECUTION

  • 新增于:Hive 1.2.0 with HIVE-10119

Client 端可以在会话级别设置 HiveServer2 操作日志记录模式。

为此, Configuration Properties#hive.server2.logging.operation.enabled 应该设置为 true。允许的值为:

  • 无:忽略任何日志记录。

  • 执行:记录任务的完成。

  • 性能:执行性能日志。

  • 详细信息:所有日志。

hive.server2.thrift.http.cookie.auth.enabled
  • 默认值:true

  • 新增于:Hive 1.2.0 with HIVE-9710

设置为 true 时,处于 HTTP 传输模式的 HiveServer2 将使用基于 cookie 的身份验证机制。

hive.server2.thrift.http.cookie.max.age
  • 默认值:86400s(1 天)

  • 新增于:Hive 1.2.0 with HIVE-9710

HiveServer2 在 HTTP 模式下使用的服务器端 cookie 的最大期限(以秒为单位)。

hive.server2.thrift.http.cookie.path
  • 默认值:(空)

  • 新增于:Hive 1.2.0 with HIVE-9710

HiveServer2 生成的 cookie 的路径。

hive.server2.thrift.http.cookie.domain
  • 默认值:(空)

  • 新增于:Hive 1.2.0 with HIVE-9710

HiveServer2 生成的 cookie 的域。

hive.server2.thrift.http.cookie.is.secure
  • 默认值:true

  • 新增于:Hive 1.2.0 with HIVE-9710

HiveServer2 生成的 cookie 的安全属性。

hive.server2.thrift.http.cookie.is.httponly
  • 默认值:true

  • 新增于:Hive 1.2.0 with HIVE-9710

HiveServer2 生成的 cookie 的 HttpOnly 属性。

hive.server2.close.session.on.disconnect
  • 默认值:true

  • 添加于:Hive 2.1.0 和HIVE-13415

关闭连接后,会话将关闭。将此设置为 false 可使会话的父连接超时。

hive.server2.xsrf.filter.enabled
  • 默认值:false

  • 内建于:Hive 2.2.0 with HIVE-13853

如果启用,则如果不存在 X-XSRF-HEADERHeaders,则 HiveServer2 将阻止通过 HTTP 对其发出的任何请求。

hive.server2.job.credential.provider.path
  • 默认值:(空)

  • 内建于:Hive 2.2.0 with HIVE-14822

通过此配置属性,用户可以提供逗号分隔的 URL 列表,这些 URL 提供 Hadoop 凭证提供程序的类型和位置。 HiveServer2 使用这些凭证提供程序来提供使用 MR 或 Spark 执行引擎启动的特定于作业的凭证。尚未针对 Tez 测试此功能。

hive.server2.in.place.progress
  • 默认值:true

  • 内建于:Hive 2.2.0 with HIVE-15473

允许 HiveServer2 发送进度条更新信息。当前仅在execution enginetez 时可用.

hive.hadoop.classpath
  • 默认值:(空)

  • 新增于:Hive 0.14.0 with HIVE-8340

对于 Windowsos,Hive 在使用“ -hiveconf hive.hadoop.classpath=%HIVE_LIB%”启动 HiveServer2 时需要传递 HIVE_HADOOP_CLASSPATH Java 参数。用户可以在 hiveserver2.xml 中设置此参数。

HiveServer2 Web UI

版本 2.0.0 中引入了 HiveServer2 的 Web 界面(请参阅HiveServer2 的 Web UI)。

hive.server2.webui.host
  • 默认值:0.0.0.0

  • 新增于:Hive 2.0.0 with HIVE-12338

HiveServer2 Web UI 将侦听的主机地址。 Web UI 可用于访问 HiveServer2 配置,本地日志和 Metrics。它还可以用于检查有关活动会话和正在执行的查询的某些信息。

hive.server2.webui.port

HiveServer2 Web UI 将侦听的端口。设置为 0 或负数可禁用 HiveServer2 Web UI 功能。

hive.server2.webui.max.threads
  • 默认值:50

  • 新增于:Hive 2.0.0 with HIVE-12338

HiveServer2 Web UI 线程的最大数量。

hive.server2.webui.max.historic.queries
  • 默认值:25

  • 添加于:Hive 2.1.0 和HIVE-12550

HiveServer2 Web UI 中显示的过去查询的最大数量。

hive.server2.webui.use.ssl

将此属性设置为 true 可以对 HiveServer2 WebUI 使用 SSL 加密。

hive.server2.webui.keystore.path
  • 默认值:(空)

  • 新增于:Hive 2.0.0 with HIVE-12471

HiveServer2 WebUI 的 SSL 证书密钥库位置。

hive.server2.webui.keystore.password
  • 默认值:(空)

  • 新增于:Hive 2.0.0 with HIVE-12471

HiveServer2 WebUI 的 SSL 证书密钥库密码。

hive.server2.webui.use.spnego
  • 默认值:false

  • 新增于:Hive 2.0.0 with HIVE-12485

HiveServer2 WebUI 的 SSL 证书密钥库密码。

hive.server2.webui.spnego.keytab
  • 默认值:(空)

  • 新增于:Hive 2.0.0 with HIVE-12485

包含 HiveServer2 WebUI SPNEGO 服务主体的 Kerberos Keytab 文件的路径。

hive.server2.webui.spnego.principal
  • 默认值:HTTP/_HOST@EXAMPLE.COM

  • 新增于:Hive 2.0.0 with HIVE-12485

HiveServer2 WebUI SPNEGO 服务主体。特殊字符串_HOST 将自动替换为 Configuration Properties#hive.server2.webui.host 的值或正确的主机名。

hive.server2.webui.explain.output
  • 默认值:false

  • 在带有HIVE-18469的 Hive 3.1.0 中添加

当此配置属性设置为 true 时,查询的EXPLAIN EXTENDED输出将显示在 WebUI/Drilldown/Query Plan 选项卡中。

在 Hive 3.1.0 之前,可以使用 Configuration Properties#hive.log.explain.output 代替此配置属性。

hive.server2.webui.show.graph
  • 默认值:false

  • 在带有HIVE-17300的 Hive 4.0.0 中添加

将此属性设置为 true 可将查询计划显示为图形而不是 WebUI 中的文本。仅在 Configuration Properties#hive.server2.webui.explain.output 设置为 true 的情况下有效。

hive.server2.webui.max.graph.size
  • 默认值:25

  • 在带有HIVE-17300的 Hive 4.0.0 中添加

可显示的最大阶段数。如果阶段数超过此数目,则不会显示查询计划。仅在 Configuration Properties#hive.server2.webui.show.graphConfiguration Properties#hive.server2.webui.explain.output 设置为 true 时有效。

hive.server2.webui.show.stats
  • 默认值:false

  • 在带有HIVE-17300的 Hive 4.0.0 中添加

将此属性设置为 true 可在 WebUI 中显示 MapReduce 任务的统计信息和日志文件。仅在 Configuration Properties#hive.server2.webui.show.graphConfiguration Properties#hive.server2.webui.explain.output 设置为 true 时有效。

Spark

在 Hive 1.1.0中添加了Apache Spark(HIVE-7292和合并到主干 JIRA 的HIVE-925793529448)。有关信息,请参见设计文档Hive on SparkHive on Spark:入门。

要将 Hive 执行配置为 Spark,请将以下属性设置为“ spark”:

除了本节中列出的配置属性外,其他部分中的某些属性也与 Spark 有关:

hive.spark.job.monitor.timeout

作业监视器获取 Spark 作业状态的超时。

hive.spark.dynamic.partition.pruning
  • 默认值:false

  • 内建于:Hive 1.3.0 with HIVE-9152

设置为 true 时,将为 Spark 引擎打开动态分区修剪功能,以便通过写入临时 HDFS 文件来处理分区键上的联接,并在以后读取以删除不必要的分区。

hive.spark.dynamic.partition.pruning.map.join.only
  • 默认值:false

  • 添加于:Hive 3.0.0 with HIVE-16998

hive.spark.dynamic.partition.pruning相似,但仅当分区表上的联接可以转换为 Map 联接时,才启用 DPP。

hive.spark.dynamic.partition.pruning.max.data.size
  • 默认值:100MB

  • 内建于:Hive 1.3.0 with HIVE-9152

生成分区修剪信息的维表的最大数据大小。如果达到此限制,优化将被关闭。

hive.spark.exec.inplace.progress
  • 默认值:true

  • 内建于:Hive 2.2.0 with HIVE-15039

在终端中就地更新 Spark 作业执行进度。

hive.spark.use.file.size.for.mapjoin

如果将其设置为 true,则 Hive/Spark 中的 mapjoin 优化将在运算符树的根目录上使用与 TableScan 运算符关联的源文件大小,而不是使用运算符统计信息。

hive.spark.use.ts.stats.for.mapjoin

如果将其设置为 true,则 Hive/Spark 中的 mapjoin 优化将使用来自 TableScan 运算符的统计信息,该统计信息位于运算符树的根目录,而不是 Join 运算符的父 ReduceSink 运算符。

hive.spark.explain.user
  • 默认值:false

  • 添加于:Hive 3.0.0 with HIVE-11133

是否在用户级别显示解释结果进行 Hive-on-Spark 查询。启用后,将在用户级别记录查询的 EXPLAIN 输出。

hive.prewarm.spark.timeout
  • 默认值:5000ms

  • 添加于:Hive 3.0.0 with HIVE-17362

Configuration Properties#hive.prewarm.enabled 为 true 时,需要 await 些时间来完成 Spark 预热器的预热。

注意:Hive on Spark 的这些配置属性记录在Tez section中,因为它们也会影响 Tez:

hive.spark.optimize.shuffle.serde
  • 默认值:false

  • 添加于:Hive 3.0.0 with HIVE-15104

如果将其设置为 true,则 Hive on Spark 将为 shuffle 中的数据类型注册自定义序列化程序。这将减少数据的重排。

hive.merge.sparkfiles
  • 默认值:false

  • 添加于:Hive 1.1.0 和HIVE-7810

在 Spark DAG 转换结束时合并小文件。

hive.spark.session.timeout.period
  • 默认值:30 分钟

  • 添加于:Hive 4.0.0 和HIVE-14162

在关闭之前,Spark Remote 驱动程序应 await 提交 Spark 作业的时间。如果在此时间后未启动 Spark 作业,Spark 远程驱动程序将关闭,从而释放它一直持有的所有资源。代价是,在同一会话中运行的任何新的 Hive-on-Spark 查询都必须 await 新的 Spark Remote Driver 启动。好处是,对于长时间运行的 Hive 会话,Spark Remote Driver 不会不必要地占用资源。最小值为 30 分钟。

hive.spark.session.timeout.period
  • 默认值:60 秒

  • 添加于:Hive 4.0.0 和HIVE-14162

检查空闲 Spark 会话的频率。最小值是 60 秒。

hive.spark.use.op.stats
  • 默认值:true

  • 在带有HIVE-15796的 Hive 2.3.0 中添加

是否使用运算符统计信息确定 Hive on Spark 的减速器并行性。如果这是错误的,Hive 将使用源表统计信息来确定所有第一级还原任务的还原器并行性,以及所有其余(第二级及以后)还原器任务的所有父级的最大还原器并行性。

将此设置为 false 会触发另一种算法,用于计算每个 Spark 随机播放的分区数。这种新算法通常会导致每个洗牌的分区数量增加。

hive.spark.use.ts.stats.for.mapjoin
  • 默认值:false

  • 在带有HIVE-15489的 Hive 2.3.0 中添加

如果将其设置为 true,则 Hive/Spark 中的 mapjoin 优化将使用来自 TableScan 运算符的统计信息,该统计信息位于运算符树的根目录,而不是 Join 运算符的父 ReduceSink 运算符。当用于普通联接→Map 联接转换的运算符统计信息不准确时,将此选项设置为 true 很有用。

hive.spark.use.groupby.shuffle
  • 默认值:true

  • 在带有HIVE-15580的 Hive 2.3.0 中添加

设置为 true 时,使用 Spark 的RDD#groupByKey执行分组方式。设置为 false 时,请使用 Spark 的RDD#repartitionAndSortWithinPartitions执行分组依据。尽管#groupByKey在运行分组 bys 时具有更好的性能,但它可能会使用过多的内存。将此设置为 false 可能会减少内存使用量,但会影响性能。

mapreduce.job.reduces
  • 默认值:-1(禁用)

  • 在 Hive1.1.0 和HIVE-7567中添加

设置每个 Spark shuffle 阶段的化简任务数量(例如,执行 Spark shuffle 时的分区数量)。默认情况下设置为-1(禁用);而是根据 Hive 数据统计信息动态计算 reduce 任务的数量。将其设置为恒定值可为所有 Spark shuffle 阶段设置相同数量的分区。

远程 Spark 驱动程序

远程 Spark 驱动程序是在 Spark 集群中启动的应用程序,用于提交实际的 Spark 作业。它是在HIVE-8528中引入的。它是一个长期存在的应用程序,它在当前用户的第一次查询后初始化,一直运行到关闭用户会话为止。以下属性控制远程 Spark 驱动程序与生成它的 HiveClient 端之间的远程通信。

hive.spark.client.future.timeout

从 HiveClient 端到远程 Spark 驱动程序的请求超时。

hive.spark.client.connect.timeout

远程 Spark 驱动程序连接回 HiveClient 端时超时。

hive.spark.client.server.connect.timeout

HiveClient 端和远程 Spark 驱动程序之间的握手超时。通过两个过程检查。

hive.spark.client.secret.bits

HiveClient 端与远程 Spark 驱动程序之间通信时,所生成的 Secret 中的随机位数。四舍五入至最接近的 8 的倍数。

hive.spark.client.rpc.server.address
  • 默认值:hive.spark.client.rpc.server.address,如果不可用,则为 localhost。

  • 新增于:Hive 2.1.0 和HIVE- 12568

HiverServer2 主机的服务器地址,用于 HiveClient 端和远程 Spark 驱动程序之间的通信。

hive.spark.client.rpc.threads

远程 Spark 驱动程序的 RPC 事件循环的最大线程数。

hive.spark.client.rpc.max.size
  • 默认值:52,428,800(50 * 1024 * 1024 或 50 MB)

  • 新增至:Hive 1.1.0HIVE-9337

HiveClient 端与远程 Spark 驱动程序之间进行通信的最大消息大小(以字节为单位)。默认值为 50 MB。

hive.spark.client.channel.log.level

远程 Spark 驱动程序的通道日志记录级别。调试,错误,信息,跟踪,警告之一。如果未设置,则选择 TRACE。

Tez

在 Hive 0.13.0 中添加了Apache Tez(HIVE-4660HIVE-6098)。有关信息,请参见设计文档Hive,尤其是安装与配置部分。

除了本节中列出的配置属性外,其他部分中的某些属性也与 Tez 相关:

Configuration Properties#hive.mapjoin.optimized.hashtable
Configuration Properties#hive.mapjoin.optimized.hashtable.wbsize
hive.jar.directory

这是 Hive 在 Tez 模式下将查找的位置,以查找在站点范围内安装的 Hive 实例。有关默认行为,请参见 Configuration Properties#hive.user.install.directory

hive.user.install.directory

如果 Hive(仅在 Tez 模式下)无法在 Configuration Properties#hive.jar.directory 中找到可用的 Hive jar,它将 Hive jar 上传到\ < hive.user.install.directory > /< user_name >并使用它来运行查询。

hive.compute.splits.in.am

是在本地还是在ApplicationMaster(仅 Tez)中生成拆分。

hive.rpc.query.plan

是通过本地资源还是 RPC 发送查询计划。

hive.prewarm.enabled

为 Tez(0.13.0 至 1.2.x)或 Tez/Spark(1.3.0+)启用容器预热。这仅适用于 Hadoop 2.

hive.prewarm.numcontainers

控制要预热 Tez(0.13.0 至 1.2.x)或 Tez/Spark(1.3.0+)的容器数。这仅适用于 Hadoop 2.

hive.merge.tezfiles

在 Tez DAG 的末尾合并小文件。

hive.tez.input.format
  • 默认值:org.apache.hadoop.hive.ql.io.HiveInputFormat

  • 添加于:Hive 0.13.0 中带有HIVE-6498HIVE-6360

Tez 的默认 Importing 格式。 Tez 组在 AM(ApplicationMaster)中拆分。

hive.tez.input.generate.consistent.splits

在 AM 中生成拆分时是否生成一致的拆分位置。

设置为 false 将根据线程的生成方式将拆分的位置和 Sequences 随机化。

与 LLAP 相关。

hive.tez.container.size

默认情况下,Tez 会生成一个 Map 器大小的容器。这可以用来覆盖默认值。

hive.tez.java.opts

默认情况下,Tez 将使用 Map 任务中的 Java 选项。这可以用来覆盖默认值。

hive.convert.join.bucket.mapjoin.tez
  • 默认值:false

  • 新增于:Hive 0.13.0 with HIVE-6447

当将 Tez 用作执行引擎时,是否可以将联接自动转换为 Hive 中的存储桶 Map 联接( Configuration Properties#hive.execution.engine 设置为“ tez”)。

hive.tez.log.level
  • 默认值:INFO

  • 新增于:Hive 0.13.0 with HIVE-6743

用于作为 DAG 的一部分执行的任务的日志级别。仅在使用 Configuration Properties#hive.tez.java.opts 配置 Java 选项时使用。

hive.localize.resource.wait.interval
  • 默认值:5000

  • 新增于:Hive 0.13.0 with HIVE-6782

await 另一个线程为 Hive-Tez 本地化相同资源的时间(以毫秒为单位)。

hive.localize.resource.num.wait.attempts
  • 默认值:5

  • 新增于:Hive 0.13.0 with HIVE-6782

await 在 Hive-Tez 中本地化资源的尝试次数。

hive.tez.smb.number.waves
  • 默认值:0.5

  • 新增于:Hive 0.14.0 with HIVE-8409

运行 SMB(sort-merge-bucket)联接的波数。占用集群的帐户。理想情况下应为 1 波。

hive.tez.cpu.vcores
  • 默认值:-1

  • 新增于:Hive 0.14.0 with HIVE-8452

默认情况下,Tez 会要求 MapReduce 配置为每个容器使用多个 CPU。这可以用来覆盖默认值。

hive.tez.auto.reducer.parallelism
  • 默认值:false

  • 新增于:Hive 0.14.0 with HIVE-7158

打开 Tez 的自动减速器并行功能。启用后,Hive 仍将估计数据大小并设置并行度估计。 Tez 将对源顶点的输出大小进行采样,并在运行时根据需要调整估计值。

hive.tez.max.partition.factor
  • 默认值:2

  • 新增于:Hive 0.14.0 with HIVE-7158

启用自动减速器并行性时,将使用此因子对随机边缘中的数据进行过度分区。

hive.tez.min.partition.factor
  • 默认值:0.25

  • 新增于:Hive 0.14.0 with HIVE-7158

启用自动减速器并行性时,将使用此系数为 Tez 指定的减速器数量设置下限。

hive.tez.exec.print.summary
  • 默认值:false

  • 新增于:Hive 0.14.0 with HIVE-8495

如果为 true,则显示在Hive CLIBeelineClient 端上执行的每个查询的执行步骤的细分。

hive.tez.exec.inplace.progress
  • 默认值:true

  • 新增于:Hive 0.14.0 with HIVE-8495

使用Hive CLI时,在终端中就地更新 Tez 作业执行进度。

LLAP

Hive 2.0(HIVE-7926和相关任务)中添加了实时和流程(LLAP)功能。有关详细信息,请参见Hive 中的 LLAP

LLAP 添加以下配置属性。

hive.llap.execution.mode
  • 默认值:none

  • Possible Values:

  • none: not tried

    • map: only map operators are considered for llap

    • all: every operator is tried; but falls back to no-llap in case of problems

    • only: same as "all" but stops with an exception if execution is not possible(从 2.2.0 开始,带有HIVE-15135)

    • 自动:转换由配置单元控制

  • 新增于:Hive 2.0.0 with HIVE-9635

选择查询片段将在容器中还是在 LLAP 中运行。如果设置为“ all”,则所有内容都将在 LLAP 中运行; “ only”类似于“ all”,但是禁用了对容器的回退,因此如果查询不能在 LLAP 中运行,查询将失败。

hive.server2.llap.concurrent.queries
  • 默认值:-1

  • 新增于:Hive 2.0.0 with HIVE-10647

通过 llap 并行允许的查询数。负数表示“无穷大”。

LLAP Client

hive.llap.client.consistent.splits
  • 默认值:false

  • 新增于:Hive 2.0.0 with HIVE-12470

是否设置拆分位置以匹配运行 LLAP 守护程序的节点,而不是使用拆分本身提供的位置。

LLAP Web 服务

hive.llap.daemon.web.port
  • 默认值:15002

  • 新增于:Hive 2.0.0 with HIVE-11358

LLAP 守护程序 Web UI 端口。

hive.llap.daemon.web.ssl
  • 默认值:false

  • 新增于:Hive 2.0.0 with HIVE-11358

LLAP 守护程序 Web UI 是否应使用 SSL

hive.llap.auto.auth
  • 默认值:true

  • 添加于:Hive 2.0.0 和..

是否设置 Hadoop 配置以在 LLAP Web 应用程序中启用身份验证。

hive.llap.daemon.service.principal
  • 默认值:(空)

  • 新增于:Hive 2.0.0 with HIVE-12341

LLAP 守护程序的服务主体的名称。

hive.llap.daemon.service.hosts

明确指定用于 LLAP 调度的主机。对于测试很有用。默认情况下,使用 YARN 注册表。

hive.llap.daemon.task.preemption.metrics.intervals
  • Default Value:30,60,300

  • 添加于:Hive 2.1.0 和HIVE-13536

逗号分隔的整数集,表示百分位数延迟度量标准的所需翻转间隔(以秒为单位)。
LLAP 守护程序任务调度程序度量标准用于杀死任务的时间(由于抢占)以及即将被抢占的任务浪费的有用时间。

LLAP Cache

hive.llap.object.cache.enabled
  • 默认值:true

  • 新增于:Hive 2.0.0 with HIVE-9849

在 LLAP 中缓存对象(计划,哈希表等)

hive.llap.io.use.lrfu
  • 默认值:false

  • 添加于:Hive 2.0.0 和..

ORC 低级缓存是否应使用“最少/经常使用”(LRFU)缓存策略,而不是默认的先进先出(FIFO)。

hive.llap.io.lrfu.lambda
  • 默认值:0.01f

  • 可能的值:0 到 1 之间

  • 添加于:Hive 2.0.0 和..

Lambda for ORC 低级缓存 LRFU 缓存策略。必须在[0,1]中。

0 使 LRFU 表现得像 LFU,1 使其表现得像 LRU,两者之间的值相应地保持平衡。

LLAP I/O

hive.llap.io.enabled
  • 默认值:null

  • 添加于:Hive 2.0.0,其中HIVE-12078有更新

LLAP I/O 层是否启用。删除属性或将其设置为 false 可禁用 LLAP I/O。

hive.llap.io.cache.orc.size
  • 默认值:1Gb

  • 添加于:Hive 2.0.0 和..

IO 分配器或 ORC 低级缓存的最大大小。

hive.llap.io.threadpool.size
  • 默认值:10

  • 新增于:Hive 2.0.0 with HIVE-10081

指定用于低级 IO 线程池的线程数。

hive.llap.io.orc.time.counters
  • 默认值:true

  • 新增于:Hive 2.0.0 with HIVE-10777

是否为 LLAP IO 层启用时间计数器(在 HDFS 中花费的时间,等等)

hive.llap.io.memory.mode
  • 默认值:缓存

  • 可能的值:缓存,分配器,无

  • 新增于:Hive 2.0.0 with HIVE-12597

LLAP IO 内存使用情况;

“缓存”(默认)使用带有自定义堆外分配器的数据和元数据缓存,
“分配器”使用自定义分配器而不使用缓存,
“ none”都不使用(此模式可能会导致性能显着下降)

hive.llap.io.allocator.alloc.min
  • 默认值:128Kb

  • 新增于:Hive 2.0.0 with HIVE-12597

LLAP 伙伴分配器可能进行的最小分配。低于此的分配将填充为最小分配。
对于 ORC,通常应与预期的压缩缓冲区大小相同,或者其次幂为 2.必须为 2 的幂。

hive.llap.io.allocator.alloc.max
  • 默认值:16Mb

  • 新增于:Hive 2.0.0 with HIVE-12597

可以从 LLAP 伙伴分配器获得最大分配。对于 ORC,应与预期的最大 ORC 压缩缓冲区大小一样大。必须是 2 的幂。

hive.llap.io.allocator.arena.count
  • 默认值:8

  • 新增于:Hive 2.0.0 with HIVE-12597

LLAP 低级缓存的竞技场计数;缓存将以(size/arena_count)个字节为单位进行分配。此大小必须为\ <= 1Gb and > =最大分配;否则,将使用调整后的尺寸。建议使用 2 的幂。

hive.llap.io.memory.size
  • 默认值:1Gb

  • 新增于:Hive 2.0.0 with HIVE-12597

IO 分配器或 ORC 低级缓存的最大大小。

hive.llap.io.allocator.direct
  • 默认值:true

  • 新增于:Hive 2.0.0 with HIVE-12597

ORC 低级缓存是否应使用直接分配。

hive.llap.io.allocator.nmap
  • 默认值:false

  • 添加于:Hive 2.1.0 和HIVE-13029

ORC 低级缓存是否应使用内存 Map 分配(直接 I/O)

hive.llap.io.allocator.nmap.path
  • 默认值:/ tmp

  • 添加于:Hive 2.1.0 和HIVE-13029

用于将 NVDIMM/NVMe 闪存存储 Map 到 ORC 低级缓存的目录位置。

LLAP CBO

hive.llap.auto.allow.uber
  • 默认值:true

  • 新增于:Hive 2.0.0 with HIVE-9777

是否允许计划器在 AM 中运行顶点。

hive.llap.auto.enforce.tree
  • 默认值:true

  • 新增于:Hive 2.0.0 with HIVE-9635

在考虑顶点之前,强制所有 parent 都处于包 lap 状态

hive.llap.auto.enforce.vectorized
  • 默认值:true

  • 新增于:Hive 2.0.0 with HIVE-9635

在考虑顶点之前,强制将 Importing 向量化

hive.llap.auto.enforce.stats
  • 默认值:true

  • 新增于:Hive 2.0.0 with HIVE-9635

在考虑顶点之前,强制使列状态可用。

hive.llap.auto.max.input.size
  • 默认值:10 * 1024 * 1024 * 1024L

  • 新增于:Hive 2.0.0 with HIVE-9635

在考虑顶点之前检查 Importing 大小(-1 禁用检查)

hive.llap.auto.max.output.size
  • 默认值:1 * 1024 * 1024 * 1024L

  • 新增于:Hive 2.0.0 with HIVE-9635

在考虑顶点之前检查输出大小(-1 禁用检查)

LLAP Metrics

hive.llap.queue.metrics.percentiles.intervals
  • 默认值:空白

  • 添加于:Hive 2.0.0 和..

逗号分隔的整数集,表示 LLAP 守护程序生产者-Consumer 队列上的百分数延迟度量标准所需的翻转间隔(以秒为单位)。

默认情况下,百分比延迟度量标准处于禁用状态。

hive.llap.management.rpc.port
  • 默认值:15004

  • 添加到:2.0.0 和HIVE-12341

LLAP 守护程序 Management 服务的 RPC 端口。

LLAP UDF 安全

基于白名单的 UDF 支持(HIVE-12852)。

hive.llap.allow.permanent.fns
  • 默认值:true

  • 新增于:2.1.0 with HIVE-13307

LLAP 决策者是否应允许使用永久性 UDF。

hive.llap.daemon.download.permanent.fns

LLAP 守护程序是否应为永久 UDF 本地化资源。

LLAP Security

hive.llap.daemon.keytab.file
  • 默认值:(空)

  • 新增于:Hive 2.0.0 with HIVE-12341

包含 LLAP 守护程序的服务主体的 Kerberos Keytab 文件的路径。

hive.llap.zk.sm.principal
  • 默认值:(空)

  • 新增于:Hive 2.0.0 with HIVE-12341

与 ZooKeeper SecretManager 的 ZooKeeper 对话的主体的名称。

hive.llap.zk.sm.keytab.file
  • 默认值:(空)

  • 新增于:Hive 2.0.0 with HIVE-12341

Kerberos Keytab 文件的路径,该文件包含用于与 ZooKeeper SecretManager 的 ZooKeeper 对话的主体。

hive.llap.zk.sm.connectionString
  • 默认值:(空)

  • 新增于:Hive 2.0.0 with HIVE-12341

ZooKeeper SecretManager 的 ZooKeeper 连接字符串。

hive.llap.daemon.acl

LLAP 守护程序的 ACL。

hive.llap.management.acl

LLAP 守护程序 Management 的 ACL。

hive.llap.daemon.delegation.token.lifetime
  • 默认值:14d

  • 新增于:Hive 2.0.0 with HIVE-12341

LLAP 委派令牌生存期,以秒为单位(如果未指定单位)。

事务和 Compactor

Hive 0.13.0(HIVE-5317及其子任务)中添加了具有行级 ACID 功能的 Hive 事务。有关详细信息,请参见Hive 中的 ACID 和 Transaction

要打开 HiveTransaction,请更改其默认值,如下所述:

这些参数还必须具有非默认值才能打开 Hive 事务:

Transactions

hive.txn.manager
  • 默认值:org.apache.hadoop.hive.ql.lockmgr.DummyTxnManager

  • HiveTransaction 值:org.apache.hadoop.hive.ql.lockmgr.DbTxnManager

  • 新增于:Hive 0.13.0 with HIVE-5843

将其设置为 org.apache.hadoop.hive.ql.lockmgr.DbTxnManager 作为打开 Hive 事务的一部分。默认的 DummyTxnManager 复制 Hive-0.13 之前的行为,并且不提供任何事务。

启用 HiveTransaction 还需要对 **** Configuration Properties#hive.compactor.initiator.on **** , **** Configuration Properties#hive.compactor.worker.threads **** , **** **** Configuration Properties#hive.support.concurrency **** **** 进行适当的设置, **** **** **** Configuration Properties#hive.enforce.bucketing **** **** **** (仅配置单元 0.x 和 1.x)和 **** **** Configuration Properties#hive.exec.dynamic.partition.mode **** **** 。

hive.txn.strict.locking.mode
  • 默认值:true

  • 内建于:Hive 2.2.0 with HIVE-15774

在严格模式下,非 ACID 资源使用标准的 R/W 锁定语义,例如 INSERT 将获得排他锁。在非严格模式下,对于非 ACID 资源,INSERT 将仅获取共享锁,这允许两次并发写入同一分区,但仍允许锁 Management 器在写入表时防止 DROP TABLE 等。 hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager.时只有苹果

hive.txn.timeout
  • 默认值:300

  • 新增于:Hive 0.13.0 with HIVE-5843

如果 Client 端未发送心跳 signal,则宣布终止事务的时间(以秒为单位)。

hive.txn.heartbeat.threadpool.size
  • 默认值:5

  • 添加于:Hive 1.3.0 和 2.0.0 与HIVE-12366

用于心跳的线程数。对于 Hive CLI,一个线程就足够了,但是 HiveServer2 需要几个线程。

hive.timedout.txn.reaper.start
  • 默认值:100s

  • 内建于:Hive 1.3.0 with HIVE-11317

元存储启动后,将运行第一个收割者的时间延迟(中止超时事务的过程)。

hive.timedout.txn.reaper.interval
  • 默认值:180s

  • 内建于:Hive 1.3.0 with HIVE-11317

描述收割机(中止超时事务的进程)运行频率的时间间隔。

hive.writeset.reaper.interval
  • 默认值:60s

  • 添加于:Hive 1.3.0 和 2.1.0,带有HIVE-13395

WriteSet 收割机运行的频率。

hive.txn.max.open.batch
  • 默认值:1000

  • 新增于:Hive 0.13.0 with HIVE-5843

一次调用 open_txns()可以获取的最大事务数。

这可控制同时打开多少个流媒体代理(例如FlumeStorm)。然后,流代理将该数量的条目写入单个文件(每个 Flume 代理或 Storm bolt)。因此,增加此值将减少流代理创建的delta files的数量。但是,这也增加了 Hive 在任何给定时间必须跟踪的未清事务数量,这可能会对读取性能产生负面影响。

hive.max.open.txns
  • 默认值:100000

  • 添加于:Hive 1.3.0 和 2.1.0,带有HIVE-13249

最大未结 Transaction 数。如果当前未完成的 Transaction 达到此限制,则将来的未完成 Transaction 请求将被拒绝,直到数量低于该限制。

hive.count.open.txns.interval
  • 默认值:1s

  • 添加于:Hive 1.3.0 和 2.1.0,带有HIVE-13249

两次检查之间的时间(以秒为单位),以计算未清 Transaction。

hive.txn.retryable.sqlex.regex
  • 默认值:(空)

  • 添加于:Hive 1.3.0 和 2.1.0,带有HIVE-12637

SQL 状态,错误代码和可重试 SQLException 的错误消息的正则表达式模式的逗号分隔列表,适用于 Hive Metastore 数据库。

例如:无法序列化.,40001 $,^ Deadlock,. ORA-08176.*

正则表达式将与之匹配的字符串具有以下形式,其中 ex 是 SQLException:

ex.getMessage()“(SQLState =” ex.getSQLState()“,ErrorCode =” ex.getErrorCode()“)”

Compactor

hive.compactor.initiator.on
  • 默认值:false

  • Hive Transactions 值:true(仅适用于 Thrift Metastore 服务的一个实例)

  • 新增于:Hive 0.13.0 with HIVE-5843

是否在此 Metastore 实例上运行启动程序线程和清理程序线程。在打开 Hive 事务的过程中,在 Thrift Metastore 服务的一个实例上将此属性设置为 true。有关打开事务所需的参数的完整列表,请参阅 Configuration Properties#hive.txn.manager

至关重要的是,仅在一个 metastore 服务实例(尚未实施)上启用此功能。

hive.compactor.worker.threads
  • 默认值:0

  • Hive Transactions 值:至少在一个 Thrift Metastore 服务实例上大于0

  • 新增于:Hive 0.13.0 with HIVE-5843

在此 metastore 实例上运行多少个压缩程序工作线程。在打开 Hive 事务的过程中,在 Thrift Metastore 服务的一个或多个实例上将此值设置为正数。有关打开事务所需的参数的完整列表,请参阅 Configuration Properties#hive.txn.manager

工作线程产生 MapReduce 作业以进行压缩。他们自己不做压实。一旦确定需要压缩,增加工作线程的数量将减少压缩表或分区所花费的时间。随着更多 MapReduce 作业将在后台运行,这还将增加 Hadoop 群集上的后台负载。

hive.compactor.worker.timeout
  • 默认值:86400

  • 新增于:Hive 0.13.0 with HIVE-5843

时间,以秒为单位,之后将宣布压缩作业失败并重新排队压缩。

hive.compactor.check.interval
  • 默认值:300

  • 新增于:Hive 0.13.0 with HIVE-5843

两次检查之间的时间(以秒为单位),以查看是否需要压缩任何表或分区。这应该保持较高水平,因为每次压缩检查都需要对 NameNode 进行多次调用。

减小此值将减少需要压缩的表或分区开始压缩的时间。但是,检查是否需要压缩需要对自上次大型压缩以来已对其执行事务的每个表或分区多次调用 NameNode。因此,减小此值将增加 NameNode 上的负载。

hive.compactor.cleaner.run.interval
  • 默认值:5000

  • 新增于:Hive 0.14 和HIVE-8258

两次运行清洁程序线程之间的时间(以毫秒为单位)。增加此值将延长清理旧的,不再使用的数据版本所需的时间,并降低 Metastore 服务器上的负载。减小此值将缩短清理旧的,不再使用的数据版本所需的时间,并增加 Metastore 服务器上的负载。

hive.compactor.delta.num.threshold
  • 默认值:10

  • 新增于:Hive 0.13.0 with HIVE-5843

表或分区中将触发较小压缩的增量目录数。

hive.compactor.delta.pct.threshold
  • 默认值:0.1

  • 新增于:Hive 0.13.0 with HIVE-5843

增量文件相对于基础的百分比(分数)大小,这将触发大的压缩。 (1.0 = 100%,因此默认值为 0.1 = 10%.)

hive.compactor.abortedtxn.threshold
  • 默认值:1000

  • 新增于:Hive 0.13.0 with HIVE-5843

涉及给定表或分区的,将触发主要压缩的中止事务的数量。

hive.compactor.aborted.txn.time.threshold
  • 默认值:12h

  • 添加于:Hive 4.0.0 和HIVE-23280

表/分区最早的中止事务的年龄,将触发压缩。
默认时间单位为:小时。设置为负数可禁用。

Compaction History

hive.compactor.history.retention.succeeded
  • 默认值:3

  • 添加于:Hive 1.3.0 和 2.0.0 与HIVE-12353

要保留在历史 Logging 的成功压缩条目数(每个分区)。

hive.compactor.history.retention.failed
  • 默认值:3

  • 添加于:Hive 1.3.0 和 2.0.0 与HIVE-12353

要保留在历史 Logging 的失败压缩条目数(每个分区)。

hive.compactor.history.retention.attempted
  • 默认值:2

  • 添加于:Hive 1.3.0 和 2.0.0 与HIVE-12353

尝试保留在历史 Logging 的压缩条目数(每个分区)。

hive.compactor.history.reaper.interval
  • 默认值:2m

  • 添加于:Hive 1.3.0 和 2.0.0 与HIVE-12353

控制清除压实历史记录的过程运行的频率。

hive.compactor.initiator.failed.compacts.threshold
  • 默认值:2

  • 添加于:Hive 1.3.0 和 2.0.0 与HIVE-12353

给定分区的连续压缩失败次数,之后启动器将停止尝试自动计划压缩。仍然可以使用ALTER TABLE来启动压缩。手动启动的压缩成功后,自动启动的压缩将恢复。请注意,该值必须小于 Configuration Properties#hive.compactor.history.retention.failed

Indexing

在 Hive 0.7.0 中使用HIVE-417添加了索引,在 Hive 0.8.0 中使用HIVE-1803添加了位图索引。有关更多信息,请参见Indexing

hive.index.compact.file.ignore.hdfs
  • 默认值:false

  • 添加于:Hive 0.7.0 和HIVE-1889

true时,存储在索引文件中的 HDFS 位置将在运行时被忽略。如果数据已移动或集群名称已更改,则索引数据仍应可用。

hive.optimize.index.filter
  • 默认值:false

  • 添加于:Hive 0.8.0 和HIVE-1644

是否启用索引自动使用。

hive.optimize.index.filter.compact.minsize
  • 默认值:5368709120

  • 添加于:Hive 0.8.0 和HIVE-1644

自动在其上使用压缩索引的 Importing 的最小大小(以字节为单位)。

hive.optimize.index.filter.compact.maxsize
  • 默认值:-1

  • 添加于:Hive 0.8.0 和HIVE-1644

自动在其上使用压缩索引的 Importing 的最大大小(以字节为单位)。负数等于无穷大。

hive.index.compact.query.max.size
  • 默认值:10737418240

  • 添加于:Hive 0.8.0 和HIVE-2096

使用压缩索引的查询可以读取的最大字节数。负值等于无穷大。

hive.index.compact.query.max.entries
  • 默认值:10000000

  • 添加于:Hive 0.8.0 和HIVE-2096

使用紧凑索引的查询期间要读取的最大索引条目数。负值等于无穷大。

hive.exec.concatenate.check.index
  • 默认值:true

  • 添加于:Hive 0.8.0 和HIVE-2125

如果将其设置为 true,则在具有索引的表/分区上执行 ALTER TABLE tbl_name [partSpec] CONCATENATE 时,Hive 将引发错误。用户想要将此设置为 true 的原因是因为它可以帮助用户避免处理所有索引下降,重新创建,重建工作。这对于具有数千个分区的表非常有帮助。

hive.optimize.index.autoupdate
  • 默认值:false

  • 添加于:Hive 0.8.0 和HIVE-2354

失效时是否启用索引的自动重建。
警告:重建索引可能是一个漫长且计算量大的操作;在许多情况下,最好手动重建索引。

hive.optimize.index.groupby
  • 默认值:false

  • 添加到:Hive 0.8.1 中带有HIVE-1694

hive.index.compact.binary.search
  • 默认值:true

  • 添加到:Hive 0.8.1 中带有HIVE-2535

在可能的情况下,是否使用二进制搜索在索引表中查找与过滤器匹配的条目。

Statistics

有关如何收集和使用 Hive 表,分区和列统计信息的信息,请参见Hive 统计

hive.stats.dbclass
  • 默认值:jdbc:derby(配置单元 0.7 到 0.12)或fs(配置单元 0.13 和更高版本)

  • 添加到:Hive 0.7 with HIVE-1361

  • 新值:在 0.13 中添加了countercustom,在HIVE-4632中添加了fs并在HIVE-6500中添加了fs

Hive 0.7 到 0.12:存储临时 Hive 统计信息的默认数据库。 StatsSetupConst.java 中定义的选项是jdbc:derbyjdbc:mysqlhbase

Hive 0.13 和更高版本:存储临时 Hive 统计信息的存储。在基于文件系统的统计信息收集(“ fs”)中,每个任务将其收集的统计信息写入文件系统上的文件中,该文件将在作业完成后进行汇总。支持的值是fs(文件系统),jdbc:<database>(其中* <database> *可以是derbymysql等),hbasecountercustom,如 StatsSetupConst.java 中所定义。

hive.stats.autogather
  • 默认值:true

  • 添加到:Hive 0.7 with HIVE-1361

使用此标志可以在 Hive DML操作期间自动收集和更新统计信息。

Note

不会收集LOAD DATA条语句的统计信息。

hive.stats.column.autogather
  • 默认值:false(Hive 2.1 和更高版本 2.x); true(Hive 3.0及更高版本)

  • 添加于:Hive 2.1

扩展统计信息自动收集以收集列级别的统计信息。

hive.stats.jdbcdriver
  • 默认值:org.apache.derby.jdbc.EmbeddedDriver

  • 添加到:Hive 0.7 with HIVE-1361

存储临时 Hive 统计信息的数据库的 JDBC 驱动程序。

hive.stats.dbconnectionstring
  • 默认值:jdbc:derby:;databaseName=TempStatsStore;create=true

  • 添加到:Hive 0.7 with HIVE-1361

存储临时 Hive 统计信息的数据库的默认连接字符串。

hive.stats.default.publisher
  • 默认值:(空)

  • 添加到:Hive 0.7 with HIVE-1923

如果 Configuration Properties#hive.stats.dbclass 不是 JDBC 或 HBase(Hive 0.12.0 及更低版本),或者 Configuration Properties#hive.stats.dbclass 是自定义类型(Hive 0.13.0),则默认使用的 Java 类(实现 StatsPublisher 接口)及更高版本:HIVE-4632)。

hive.stats.default.aggregator
  • 默认值:(空)

  • 添加到:Hive 0.7 with HIVE-1923

如果 Configuration Properties#hive.stats.dbclass 不是 JDBC 或 HBase(Hive 0.12.0 及更低版本),或者 Configuration Properties#hive.stats.dbclass 是自定义类型(Hive 0.13.0),则默认使用的 Java 类(实现 StatsAggregator 接口)及更高版本:HIVE-4632)。

hive.stats.jdbc.timeout
  • 默认值:30

  • 添加到:Hive 0.7 with HIVE-1961

JDBC 连接和语句使用的超时值(秒数)。

hive.stats.atomic
  • 默认值:false

  • 添加到:Hive 0.7 with HIVE-1961

如果将其设置为 true,则仅当所有类型的统计信息(行数,文件数,字节数等)可用时,才会更新 Metastore 统计信息。否则,将使用所有可用的东西以尽力而为的方式更新 Metastore 统计信息。

hive.stats.retries.max
  • 默认值:0

  • 添加到:Hive 0.8 with HIVE-2127

统计发布者/聚集者获得更新中间数据库的异常时的最大重试次数。默认为不尝试失败。

hive.stats.retries.wait
  • 默认值:3000

  • 添加到:Hive 0.8 with HIVE-2127

下次重试之前的基本 await 窗口(以毫秒为单位)。实际的 await 时间由 baseWindow *失败 baseWindow (失败 1)(0.0,1.0 之间的随机数)计算得出。

hive.stats.collect.rawdatasize
  • 默认值:true

  • 添加到:Hive 0.8 with HIVE-2185

如果为 true,则在分析表时会收集原始数据大小。

hive.client.stats.publishers

以逗号分隔的统计信息发布者列表,将在每个作业的计数器上调用。Client 端统计发布者被指定为实现 org.apache.hadoop.hive.ql.stats.ClientStatsPublisher 接口的 Java 类的名称。

hive.client.stats.counters

hive.client.stats.publishers (当想要限制其发布时)应该感兴趣的计数器子集。应该使用非显示名称。

hive.stats.reliable
  • 默认值:false

  • 添加于:Hive 0.10.0 和HIVE-1653

  • 新行为:带有HIVE-3777的 Hive 0.13.0

查询是否会因为无法完全准确地收集统计信息而失败。如果将其设置为 true,则由于无法准确计算统计信息,可能无法从分区表或未分区表中读取/写入分区表或未分区表。如果将其设置为 false,则操作将成功。

Hive 0.13.0 及更高版本中,如果 hive.stats.reliable 为 false 并且无法正确计算统计信息,则该操作仍然可以成功并更新统计信息,但是它将分区属性“ areStatsAccurate”设置为 false。如果应用程序需要准确的统计信息,则可以在后台获取它们。

hive.stats.ndv.error

NDV 估算值的标准误差,以百分比表示。这提供了准确性和计算成本之间的权衡。较低的误差值表示较高的准确性和较高的计算成本。 (NDV 表示不同值的数量.)

它只影响 FM 草图(不是默认的 HLL 算法),在 FM-Sketch 中,它会计算必要的位向量数以达到精度。

hive.stats.collect.tablekeys
  • 默认值:false

  • 新增:Hive0.10 和HIVE-3501

表的 join 和 group by 键是否在 QueryPlan 中派生和维护。这对于确定如何访问表以及确定是否应对其进行存储桶很有用。

hive.stats.collect.scancols
  • 默认值:false

  • 添加于:Hive 0.11 中带有HIVE-3940

在 QueryPlan 中是否跟踪列访问。这对于确定如何访问表以及确定是否存在可以修剪的浪费列很有用。

hive.stats.key.prefix.max.length
  • 默认值:200(配置单元 0.11 和 0.12)或150(Hive 0.13和更高版本)

  • 添加于:Hive 0.11 中带有HIVE-3750

确定用于中间统计信息收集的键的前缀是否超过某个长度时,是否使用键的哈希值。如果值\ < 0 then hashing is never used, if the value > = 0,则仅当键前缀的长度超过该值时才使用哈希。密钥前缀定义为密钥中任务 ID 之前的所有内容。对于计数器类型统计信息,其最大值为 mapreduce.job.counters.group.name.max ,默认情况下为 128.

hive.stats.key.prefix.reserve.length
  • 默认值:24

  • 新增于:Hive 0.13 with HIVE-6229

统计关键字后缀的保留长度。当前仅对计数器类型统计有意义,计数器统计应使完整统计键的长度小于 Configuration Properties#hive.stats.key.prefix.max.length 配置的最大长度。对于计数器类型统计信息,它应大于 LB 规范的长度(如果存在)。

hive.stats.max.variable.length
  • 默认值:100

  • 新增于:Hive 0.13 with HIVE-5369

为了估计流经 Hive/Tez 的运算符的数据大小(用于缩减器估计等),将平均行大小乘以每个运算符的总行数。平均行大小是根据该行中所有列的平均列大小计算得出的。在没有列统计信息的情况下,对于可变长度列(如字符串,字节等),将使用此值。对于固定长度的列,使用其对应的 Java 等效大小(浮点数-4 字节,双精度数-8 字节等)。

hive.analyze.stmt.collect.partlevel.stats
  • 默认值:true

  • 新增于:Hive 0.14.0 with HIVE-7609

在 0.14 之前的版本中,在未分配分区的情况下,在分区表上,使用分析语句收集表级统计信息。该行为从 0.14 开始已更改为改为收集所有分区的分区级别统计信息。如果需要收集汇总表级统计信息的旧行为,请将此配置的值更改为 false。这仅影响列统计信息。基本统计信息不受此配置影响。

hive.stats.list.num.entries
  • 默认值:10

  • 新增于:Hive 0.13 with HIVE-5369

为了估计流经 Hive/Tez 的运算符的数据大小(用于缩减器估计等),将平均行大小乘以每个运算符的总行数。平均行大小是根据该行中所有列的平均列大小计算得出的。在没有列统计信息的情况下,对于可变长度的复杂列(如 list),可以使用此配置属性指定平均条目数/值。

hive.stats.map.num.entries
  • 默认值:10

  • 新增于:Hive 0.13 with HIVE-5369

为了估计流经 Hive/Tez 的运算符的数据大小(用于缩减器估计等),将平均行大小乘以每个运算符的总行数。平均行大小是根据该行中所有列的平均列大小计算得出的。在没有列统计信息的情况下,对于可变长度的复杂列(例如 map),可以使用此配置属性指定平均条目数/值。

hive.stats.map.parallelism

Hive/Tez 优化器估计流过每个运算符的数据大小。对于 GROUPBY 运算符,需要知道准确计算数据大小的 Map 端并行性。默认情况下,此值设置为 1,因为优化器在编译时不知道 Map 器的数量。此 Hive 配置属性可用于指定用于 GROUPBY 运算符的数据大小计算的 Map 器数。 (此配置属性在版本 0.14.0 中已删除.)

hive.stats.fetch.partition.stats

用统计信息 Comments 运算符树需要分区级别的基本统计信息,例如行数,数据大小和文件大小。从元存储中获取分区统计信息。当分区数量很多时,获取每个所需分区的分区统计信息可能会很昂贵。此标志可用于禁止从 metastore 获取分区统计信息。禁用此标志后,Hive 将调用文件系统以获取文件大小,并从行模式估计行数。

hive.stats.fetch.column.stats
  • 默认值:false

  • 新增于:Hive 0.13 with HIVE-5898

用统计信息 Comments 运算符树需要列统计信息。列统计信息是从元存储中获取的。当列数很高时,获取每个所需列的列统计信息可能会很昂贵。此标志可用于禁止从 metastore 获取列统计信息。

hive.stats.join.factor
  • 默认值:(float) 1.1

  • 新增于:Hive 0.13 with HIVE-5921

Hive/Tez 优化器估计流过每个运算符的数据大小。 JOIN 运算符使用列统计信息来估计从中流出的行数,从而估计数据大小。在没有列统计信息的情况下,此因子确定从 JOIN 运算符流出的行数。

hive.stats.deserialization.factor
  • Default Value:

  • Hive0.13 至 2.x.x:(float) 1.0

  • Hive 3.0.0 及更高版本:(float) 10.0

  • 新增于:Hive 0.13 with HIVE-5921

  • Hive 3.0中的默认值从 1.0 更改为 10.0

Hive/Tez 优化器估计流过每个运算符的数据大小。在缺乏行数和数据大小等基本统计信息的情况下,文件大小用于估计行数和数据大小。由于表/分区中的文件已序列化(并且可以选择压缩),因此无法可靠地确定行数和数据大小的估计值。该因子乘以文件大小即可解决序列化和压缩问题。

hive.stats.avg.row.size
  • 默认值:10000

  • 新增于:Hive 0.13 with HIVE-5921

在没有表/分区统计信息的情况下,将使用平均行大小来估计行数/数据大小。

hive.compute.query.using.stats
  • 默认值:false

  • 新增于:Hive 0.13.0 with HIVE-5483

设置为 true 时,Hive 将纯粹使用元存储中存储的统计信息来回答一些查询,如 min,max 和 count(1)。对于基本统计信息收集,请将配置属性 Configuration Properties#hive.stats.autogather 设置为 true。要收集更高级的统计信息,请运行 ANALYZE TABLE 查询。

hive.stats.gather.num.threads
  • 默认值:10

  • 新增于:Hive 0.13.0 with HIVE-6578

partialscan/noscan 分析命令用于分区表的线程数。这仅适用于实现 StatsProvidingRecordReader 接口的文件格式(例如ORC)。

hive.stats.fetch.bitvector
  • 默认值:false

  • 添加于:Hive 3.0.0 with HIVE-16997

Hive 是否在计算不同值(ndv)的数量时是否获取位向量。如果要使用没有位向量的旧模式,请将其设置为 false。

Runtime Filtering

hive.tez.dynamic.semijoin.reduction
  • 默认值:true

  • 添加到:Hive 2.2 with HIVE-15269

hive.tez.min.bloom.filter.entries
  • 默认值:1000000

  • 添加到:Hive 2.3 with HIVE-16260

hive.tez.max.bloom.filter.entries
  • 默认值:100000000

  • 添加到:Hive 2.2 with HIVE-15269

hive.tez.bloom.filter.factor
  • 默认值:2.0

  • 添加到:Hive 2.3 with HIVE-16260

hive.tez.bigtable.minsize.semijoin.reduction
  • 默认值:1000000

  • 添加到:Hive 2.3 with HIVE-16260

身份验证和授权

有关授权模式的概述,请参见Hive Authorization

受限/隐藏/内部列表和白名单

hive.conf.restricted.list
  • Default Value:

  • Hive 0.11.0 :(为空,但暗含此列表)

    • Hive0.13.0:hive.security.authenticator.manager, hive.security.authorization.manager(HIVE-5953)

    • Hive0.14.0:hive.security.authenticator.manager, hive.security.authorization.manager, hive.users.in.admin.role(HIVE-6437)

    • Hive2.1.0:hive.security.authenticator.manager, hive.security.authorization.manager, hive.users.in.admin.role, hive.server2.xsrf.filter.enabled(HIVE-13853)

    • Hive2.2.0:hive.security.authenticator.manager, hive.security.authorization.manager, hive.security.metastore.authorization.manager, hive.security.metastore.authenticator.manager, hive.users.in.admin.role, hive.server2.xsrf.filter.enabled, hive.security.authorization.enabled(HIVE-14099),hive.server2.authentication.ldap.baseDN(HIVE-15713),hive.server2.authentication.ldap.url(HIVE-15713),hive.server2.authentication.ldap.Domain(HIVE-15713),hive.server2.authentication.ldap.groupDNPattern(HIVE-15713),hive.server2.authentication.ldap.groupFilter(HIVE-15713hive.server2.authentication.ldap.groupMembershipKey(HIVE-15713),hive.server2.authentication.ldap.userMembershipKey(HIVE-15713),hive.server2.authentication.ldap.groupClassKey(HIVE-15713),hive.server2.authentication.ldap.customLDAPQuery(HIVE-15713)

    • 配置单元 3.0.0:以上所有内容以及以下内容: hive.spark.client.connect.timeout(HIVE-16876),hive.spark.client.server.connect.timeout(HIVE-16876),hive.spark.client.channel.log.level(HIVE-16876),hive.spark.client.rpc.max.size(HIVE-16876),hive.spark.client.rpc.threads(HIVE-16876),hive.spark.client.secret.bits(HIVE-16876),hive.spark.client.rpc.server.address(HIVE-16876) hive.spark.client.rpc.server.port(HIVE-16876),hikari.*(HIVE-17318),dbcp.*(HIVE-17319),hadoop.bin.path(HIVE-18248),yarn.bin.path(HIVE-18248)

  • 添加于:Hive 0.11.0 和HIVE-2935

用逗号分隔的配置属性列表,这些属性在运行时不可变。例如,如果 Configuration Properties#hive.security.authorization.enabled 设置为 true,则应将其包括在此列表中,以防止 Client 端在运行时将其更改为 false。

hive.conf.hidden.list
  • Default Value:

  • Hive 1.2.2: j avax.jdo.option.ConnectionPassword,hive.server2.keystore.password ( HIVE-9013)

Hive 2.3.0: fs.s3.awsAccessKeyId,fs.s3.awsSecretAccessKey,fs.s3n.awsAccessKeyId,fs.s3n.awsSecretAccessKey,fs.s3a.access.key,fs.s3a.secret.key,fs.s3a.proxy.password (HIVE-14588)
  • Hive 3.0.0: dfs.adls.oauth2.credential,fs.adl.oauth2.credential ( HIVE-18228)

以逗号分隔的配置选项列表,普通用户不应读取,例如密码。

hive.conf.internal.variable.list
  • 默认值:hive.added.files.path,hive.added.jars.path,hive.added.archives.path

  • 内建于:Hive 1.3.0 with HIVE-12346

用逗号分隔的配置选项列表,这些配置选项在内部使用,不应通过 set 命令设置。

hive.security.command.whitelist
  • 默认值:set,reset,dfs,add,delete,compile[,list,reload]

  • 添加于:Hive 0.13.0 中带有HIVE-5400HIVE-5252

  • 在 Hive 0.14.0 中进行了更改,以将“列表”和“重新加载”包含在HIVE-7592(“列表”)和HIVE-7553(“重新加载”)中

用户授权执行的非 SQL Hive 命令的逗号分隔列表。这可用于限制授权命令集。受支持的命令列表是从 Hive 0.13.0 开始的“设置,重置,dfs,添加,删除,编译”或从 Hive 0.14.0 开始的“默认设置,重置,dfs,添加,列表,删除,重新加载,编译”和默认设置所有这些命令均已授权。要限制这些命令中的任何一个,请将 hive.security.command.whitelist 设置为其中没有该命令的值。

基于 SQL 标准的 Hive 授权白名单

有关在基于 SQL 标准的授权中授权 set 命令的白名单属性的信息,请参见下面的 Configuration Properties#hive.security.authorization.sqlstd.confwhitelist

HiveClient 端安全

hive.security.authorization.enabled
  • 默认值:false

  • 添加于:Hive 0.7.0

启用或禁用 HiveClient 端授权。

hive.security.authorization.manager
  • 默认值:org.apache.hadoop.hive.ql.security.authorization.DefaultHiveAuthorizationProvider

  • 添加于:Hive 0.7.0

HiveClient 端授权 Management 器类名称。用户定义的授权类应实现接口 org.apache.hadoop.hive.ql.security.authorization.HiveAuthorizationProvider。

hive.security.authenticator.manager
  • 默认值:org.apache.hadoop.hive.ql.security.HadoopDefaultAuthenticator

  • 添加于:Hive 0.7.0

配置单元 Client 端身份验证器 Management 器类名称。用户定义的身份验证器应实现 org.apache.hadoop.hive.ql.security.HiveAuthenticationProvider 接口。

hive.security.authorization.createtable.user.grants
  • 默认值:(空)

  • 添加于:Hive 0.7.0

创建表后,将自动授予某些用户特权。像“ userX,userY:select; userZ:create”之类的示例将向 userX 和 userY 授予选择特权,并在创建新表时向 userZ 授予创建特权。

hive.security.authorization.createtable.group.grants
  • 默认值:(空)

  • 添加于:Hive 0.7.0

每当创建表时,都会自动授予某些组特权。诸如“ groupX,groupY:select; groupZ:create”之类的示例将向 groupX 和 groupY 授予选择特权,并在创建新表时向 groupZ 授予创建特权。

hive.security.authorization.createtable.role.grants
  • 默认值:(空)

  • 添加于:Hive 0.7.0

每当创建表时,特权便会自动授予某些角色。像“ roleX,roleY:select; roleZ:create”之类的示例将向 roleX 和 roleY 授予选择特权,并在创建新表时向 roleZ 授予创建特权。

hive.security.authorization.createtable.owner.grants
  • 默认值:(空)

  • 添加于:Hive 0.7.0

创建表后,将自动授予所有者的特权。诸如“ select,drop”之类的示例将向表所有者授予 select 和 drop 特权。请注意,默认值使表的创建者无法访问该表。

Hive Metastore 安全

在 Hive 0.10.0(HIVE-3705)中添加了 Metastore 端安全性。有关更多信息,请参见授权概述Metastore Server 中基于存储的授权中的详细信息。

有关常规的 metastore 配置属性,请参阅Configuration Properties#MetaStore

hive.metastore.pre.event.listeners
  • 默认值:(空)

  • 添加到:Hive 0.9.0 和HIVE-2853

每当数据库,表和分区被创建,更改或删除时,事件前侦听器类都将被加载到 metastore 一侧以运行代码。在 hive-site.xml 中将此配置属性设置为org.apache.hadoop.hive.ql.security.authorization.AuthorizationPreEventListener,以打开 Hive Metastore 端安全性。

hive.security.metastore.authorization.manager
  • 默认值:org.apache.hadoop.hive.ql.security.authorization.DefaultHiveMetastoreAuthorizationProvider

  • 添加于:Hive 0.10.0 和HIVE-3705;在 Hive 0.14.0 中使用HIVE-7209进行了修订

  • Hive 0.13 和更早版本:*要在元存储中用于授权的授权 Management 器类名称。用户定义的授权类应实现接口org.apache.hadoop.hive.ql.security.authorization.HiveMetastoreAuthorizationProvider

*配置单元 0.14 和更高版本:*将在元存储中用于授权的授权 Management 器类的名称(以逗号分隔)。用户定义的授权类应实现接口 org.apache.hadoop.hive.ql.security.authorization.HiveMetastoreAuthorizationProvider。所有授权 Management 器类都必须成功授权 metastore API 调用才能允许执行命令。

DefaultHiveMetastoreAuthorizationProvider 实现标准的 Hive 授予/吊销模型。还提供了基于存储的授权实现,以用作此配置属性的值:

  • org.apache.hadoop.hive.ql.security.authorization.StorageBasedAuthorizationProvider

它使用 HDFS 权限提供授权,而不是使用 Hive 样式的基于授权的授权。

hive.security.metastore.authenticator.manager
  • 默认值:org.apache.hadoop.hive.ql.security.HadoopDefaultMetastoreAuthenticator

  • 添加于:Hive 0.10.0 和HIVE-3705

要在身份验证存储库中使用的身份验证器 Management 器类名称。用户定义的身份验证器类应实现接口org.apache.hadoop.hive.ql.security.HiveAuthenticationProvider

hive.security.metastore.authorization.auth.reads
  • 默认值:true

  • 新增于:Hive 0.14.0 with HIVE-8221

如果是这样,则 Metastore 授权者将授权对数据库和表的读取操作。参见基于存储的授权

hive.metastore.token.signature
  • 默认值:“”(空字符串)

  • 在 Hive 0.7.0 中添加,在 Hive 2.1.0 中添加到 HiveConf

从当前用户的令牌中选择令牌时要匹配的委托令牌服务名称。

基于 SQL 标准的授权

Version

Hive 0.13.0 引入了基于SQL 标准授权模型的细粒度授权。有关功能说明和子任务列表,请参见HIVE-5837

hive.users.in.admin.role
  • 默认值:(空)

  • 新增于:Hive 0.13.0 with HIVE-5959

用逗号分隔的用户列表,将在元存储启动时添加到 ADMIN 角色。以后仍然可以添加更多用户。

hive.security.authorization.sqlstd.confwhitelist
  • 默认值:(空,但包含以下隐式显示的列表)

  • 添加于:Hive 0.13.0 中带有HIVE-6846;在 Hive 0.14.0 中使用HIVE-8534更新,并在以后的版本中更新了一些 JIRA 问题

Java 正则表达式。使用SQL 标准基础授权时,用户可以修改与此正则表达式匹配的配置属性。

如果未设置此参数,则由 SQL 标准授权者添加默认列表。要显示当前版本的默认列表,请使用命令“ set hive.security.authorization.sqlstd.confwhitelist”。

在 Hive 0.13.0 中,默认的白名单具有以下属性(对于同一行,每行排列一个属性,请参见HIVE-6846):

hive.exec.reducers.bytes.per.reducer,hive.exec.reducers.max,hive.map.aggr,hive.map.aggr.hash.percentmemory,hive.map.aggr.hash.force.flush.memory。阈值,hivemapaggr 哈希最小减少量,hivegroupbyskewindata,hive 优化优化 multigroupby 常见区别,hive 优化索引组,hiveoptimize.ppd,hiveoptimize.ppd。存储,hive.ppd 识别传递性,hive.optimize.groupby,hive.optimize.sort.dynamic.partition,hive.optimize.union.move,hive.multigroupby.singlereducer,hive.map.groupby.sorted,hive.map。 groupby.sorted.testmode,hive.optimize.skewjoin,hive.optimize.skewjoin.compiletime,hive.mapred.mode,hive.enforce.bucketmapjoin,hive.exec.compress.output,hive.exec.compress.intermediate,hive。 exec.parallel,hive.exec.parallel.thread.number,hive.exec.rowoffset,hive.merge.mapfiles,hive.merge.mapredfiles,hive.merge.tezfiles,hive.ignore.mapjoin.hint,hive.auto。 convert.join,hive.auto.convert.join.noconditionaltask,hive.auto.convert.join.noconditionaltask.size,hive autoconvert.join.unstaged,hive.enforce.bucketing,hive.enforce.sorting,hive.enforce.sortmergebucketmapjoin,hive.auto.convert.sortmerge.join,hive.execution.engine,hive.vectorized.execution 的使用.enabled,hive.mapjoin.optimized.keys,hive.mapjoin.lazy.hashtable,hive.exec.check.crossproducts,hive.compat,hive.exec.dynamic.partition.mode,mapred.reduce.tasks,mapred.output .compression.codec,mapred.map.output.compression.codec,mapreduce.job.reduce.slowstart.completedmaps,mapreduce.job.queuename。

Version Information

Hive 0.14.0 将新参数添加到默认白名单(请参阅HIVE-8534)。

Hive 1.1.0 删除了一些参数(请参阅HIVE-9331)。

配置单元 1.2.0 和 1.2.1 添加了更多新参数(请参见HIVE-10578HIVE-10678HIVE-10967)。

配置单元 1.3.0、2.1.1 和 2.2.0 添加了其他新参数(请参见HIVE-14073)。

Hive 3.0.0 修复了 1.2.1 中添加的参数,将 mapred.job.queuename 更改为 mapred.job.queue.name(请参见HIVE-17584)。

当某些参数与 HiveConf.java 中白名单的正则表达式规范之一匹配时,会自动添加这些参数(例如,Hive 2.0.0 中的 hive.log.trace.id –见HIVE-12419)。

请注意,白名单检查后仍会执行 Configuration Properties#hive.conf.restricted.list 检查。

hive.security.authorization.sqlstd.confwhitelist.append
  • 默认值:(空)

  • 新增于:Hive 0.14.0 with HIVE-8534

第二个 Java regex,除了hive.security.authorization.sqlstd.confwhitelist之外,配置属性的白名单也将匹配。请勿在值中包含开头|

使用此正则表达式而不是更新hive.security.authorization.sqlstd.confwhitelist的原始正则表达式意味着您可以追加到由 SQL 标准授权设置的默认值,而不必完全替换它。

hive.server2.builtin.udf.whitelist
  • 默认值:(空,视为未设置-允许所有 UDF)

  • 新增至:Hive 1.1.0HIVE-8893

以逗号分隔的允许执行的内置 UDF 列表。如果从查询中调用,则未包含在列表中的 UDF 将返回错误。如果设置为空,则将其视为通配符–将允许所有 UDF。请注意,此配置是在启动时由 HiveServer2 读取的,并且在会话中使用“ set”命令更改此配置不会更改行为。

hive.server2.builtin.udf.blacklist

逗号分隔的内置 UDF 列表,不允许执行。如果从查询中调用,列表中包含的 UDF 将返回错误。请注意,此配置是在启动时由 HiveServer2 读取的,并且在会话中使用“ set”命令更改此配置不会更改行为。

hive.security.authorization.task.factory
  • 默认值:org.apache.hadoop.hive.ql.parse.authorization.HiveAuthorizationTaskFactoryImpl

  • 新增至:Hive 1.1.0HIVE-8611

要覆盖默认的授权 DDL 处理,请将 hive.security.authorization.task.factory 设置为实现 org.apache.hadoop.hive.ql.parse.authorization.HiveAuthorizationTaskFactory 接口的类。

Archiving

有关 Hive 对Hadoop archives的支持的一般信息,请参见归档以减少文件计数

fs.har.impl
  • 默认值:org.apache.hadoop.hive.shims.HiveHarFileSystem

  • 添加于:Hive 0.8.1

用于访问 Hadoop 存档的实现。请注意,这不适用于低于 0.20 的 Hadoop 版本。

hive.archive.enabled
  • 默认值:false

  • 添加于:Hive0.6.0

是否允许归档操作。

hive.archive.har.parentdir.settable
  • 默认值:false

  • 添加于:Hive0.6.0

  • 删除于:Hive 0.10.0 with HIVE-3338

在新的 Hadoop 版本中,必须在创建 HAR 时设置父目录。由于仅凭版本号很难检测到此功能,因此需要在 Hive 版本 0.6.0 至 0.9.0 中手动设置此配置变量。 (此配置属性在版本 0.10.0 中已删除.)

Locking

有关锁定的一般信息,请参见Hive 并发模型

hive.support.concurrency
  • 默认值:false

  • 添加于:Hive 0.7.0 和HIVE-1293

Hive 是否支持并发。 ZooKeeper实例必须已启动并正在运行,默认的 Hive 锁 Management 器才能支持读写锁。

设置为true以支持插入...值,更新和删除个事务(Hive 0.14.0 及更高版本)。有关打开 HiveTransaction 所需的参数的完整列表,请参阅 Configuration Properties#hive.txn.manager

hive.lock.manager
  • 默认值:org.apache.hadoop.hive.ql.lockmgr.zookeeper.ZooKeeperHiveLockManager

  • 添加于:Hive 0.7.0 和HIVE-1293

hive.support.concurrency设置为true时要使用的锁 Management 器。

hive.lock.mapred.only.operation
  • 默认值:false

  • 添加于:Hive 0.8.0

此配置属性用于控制是否仅锁定需要执行至少一个 Map 作业的查询。

hive.lock.query.string.max.length
  • 默认值:1000000

  • 添加于:Hive 3.0.0

要存储在锁中的查询字符串的最大长度。默认值为 1000000,因为 znode 的数据限制为 1MB

hive.lock.numretries
  • 默认值:100

  • 添加于:Hive 0.7.0 和HIVE-1293

您想要尝试获得所有锁的总次数。

hive.unlock.numretries
  • 默认值:10

  • 添加于:Hive 0.8.1

您要进行一次解锁的总次数。

hive.lock.sleep.between.retries
  • 默认值:60

  • 添加于:Hive 0.7.0 和HIVE-1293

两次重试之间的睡眠时间(以秒为单位)。

hive.zookeeper.quorum
  • 默认值:(空)

  • 添加于:Hive 0.7.0 和HIVE-1293

与之对话的 ZooKeeper 服务器列表。只有读/写锁才需要。

hive.zookeeper.client.port
  • Default Value:

  • 配置单元 0.7.0 :(空)

    • Hive0.8.0 及更高版本:2181(HIVE-2196)
  • 添加于:Hive 0.7.0 和HIVE-1293

与之通信的 ZooKeeper 服务器的端口。只有读/写锁才需要。

hive.zookeeper.session.timeout
  • Default Value:

  • 配置单元 0.7.0 至 1.1.x:600000ms

    • Hive1.2.0 及更高版本:1200000ms(HIVE-8890)``
  • 添加于:Hive 0.7.0 和HIVE-1293

ZooKeeperClient 端的会话超时(以毫秒为单位)。如果未在超时时间内发送心跳,则 Client 端将断开连接,结果,所有锁都将释放。

hive.zookeeper.namespace
  • 默认值:hive_zookeeper_namespace

  • 添加于:Hive 0.7.0

在其下创建所有 ZooKeeper 节点的父节点。

hive.zookeeper.clean.extra.nodes
  • 默认值:false

  • 添加于:Hive 0.7.0

在会话结束时清理额外的节点。

hive.lockmgr.zookeeper.default.partition.name
  • 默认值:__HIVE_DEFAULT_ZOOKEEPER_PARTITION__

  • 添加于:Hive 0.7.0 和HIVE-1293

ZooKeeperHiveLockManager 为Hive 锁 Management 器时的默认分区名称。

Metrics

Hive 收集的 Metrics 可以在HiveServer2 Web UI中查看。有关更多信息,请参见Hive Metrics

hive.metastore.metrics.enabled
  • 默认值:false

  • 在 Hive1.3.0 和 2.0.0 中使用HIVE-10761添加

在 Hive Metastore Service 上启用 Metrics。 (有关其他 Metastore 配置属性,请参见Metastore配置属性#Hive Metastore 安全部分。)

hive.server2.metrics.enabled
  • 默认值:false

  • 在 Hive1.3.0 和 2.0.0 中使用HIVE-10761添加

在 HiveServer2 上启用 Metrics。 (有关其他 HiveServer2 配置属性,请参阅Configuration Properties#HiveServer2部分。)

hive.service.metrics.class
  • 默认值:org.apache.hadoop.hive.common.metrics.metrics2.CodahaleMetrics

  • 在 Hive1.3.0 和 2.0.0 中使用HIVE-10761添加

HiveMetrics 子系统实现类。新的实现是“ org.apache.hadoop.hive.common.metrics.metrics2.CodahaleMetrics”。若要恢复到 Hive 1.3 和 2.0 之前的旧实现及其内置的 JMX 报告功能,请选择“ org.apache.hadoop.hive.common.metrics.LegacyMetrics”。

hive.service.metrics.reporter
  • 默认值:“ JSON_FILE, JMX

  • 在 Hive1.3.0 和 2.0.0 中使用HIVE-10761添加

  • 不推荐使用:Hive 3.0.0 和HIVE-16206

度量标准类 org.apache.hadoop.hive.common.metrics.metrics2.CodahaleMetrics 的报告程序类型,逗号分隔的值列表 JMX,CONSOLE,JSON_FILE。

Hive 2.1.0 中已使用HIVE-13480添加了新的报告程序类型 HADOOP2.

hive.service.metrics.codahale.reporter.classes
  • 默认值:“ org.apache.hadoop.hive.common.metrics.metrics2.JsonFileMetricsReporter,org.apache.hadoop.hive.common.metrics.metrics2.JmxMetricsReporter”

  • 在带有HIVE-16206的 Hive 3.0.0 中添加

度量标准类 org.apache.hadoop.hive.common.metrics.metrics2.CodahaleMetrics 的报告程序实现类的逗号分隔列表。如果存在,则覆盖 hive.service.metrics.reporter conf。

hive.service.metrics.file.location
  • 默认值:“ /tmp/report.json

  • 在 Hive1.3.0 和 2.0.0 中使用HIVE-10761添加

对于hive.service.metrics.class org.apache.hadoop.hive.common.metrics.metrics2.CodahaleMetrics 和hive.service.metrics.reporter JSON_FILE,这是本地 JSONMetrics 文件转储的位置。该文件将在hive.service.metrics.file.frequency的每个间隔被覆盖。

hive.service.metrics.file.frequency
  • 默认值:5 秒

  • 在 Hive1.3.0 和 2.0.0 中使用HIVE-10761添加

对于hive.service.metrics.class org.apache.hadoop.hive.common.metrics.metrics2.CodahaleMetrics 和hive.service.metrics.reporter JSON_FILE,这是更新 JSONMetrics 文件的频率。

hive.service.metrics.hadoop2.component
  • 默认值:“ hive

  • 在带有HIVE-13480的 Hive 2.1.0 中添加

对于hive.service.metrics.class org.apache.hadoop.hive.common.metrics.metrics2.CodahaleMetrics 和hive.service.metrics.reporter HADOOP2,这是要提供给 HADOOP2Metrics 系统的组件名称。理想情况下,MetaStore 的“ hivemetastore”和 HiveServer2 的“ hiveserver2”。Metrics 将每隔hive.service.metrics.hadoop2.frequency更新。

hive.service.metrics.hadoop2.frequency
  • 默认值:30 秒

  • 在带有HIVE-13480的 Hive 2.1.0 中添加

对于hive.service.metrics.class org.apache.hadoop.hive.common.metrics.metrics2.CodahaleMetrics 和hive.service.metrics.reporter HADOOP2,这是更新 HADOOP2Metrics 系统的频率。

Clustering

hive.cluster.delegation.token.store.class
  • 默认值:org.apache.hadoop.hive.thrift.MemoryTokenStore

  • 添加于:Hive 0.9.0

委托令牌存储实现。设置为 org.apache.hadoop.hive.thrift.ZooKeeperTokenStore 以实现负载平衡的集群。

hive.cluster.delegation.token.store.zookeeper.connectString
  • 默认值:localhost:2181

  • 添加于:Hive 0.9.0

ZooKeeper 令牌存储连接字符串。

hive.cluster.delegation.token.store.zookeeper.znode
  • 默认值:/hive/cluster/delegation

  • 添加于:Hive 0.9.0

令牌存储数据的根路径。

hive.cluster.delegation.token.store.zookeeper.acl
  • 默认值:sasl:hive/host1@EXAMPLE.COM:cdrwa,sasl:hive/host2@EXAMPLE.COM:cdrwa

  • 添加于:Hive 0.9.0

令牌存储条目的 ACL。列表逗号分隔了群集的所有服务器主体。

Regions

Reverted by HIVE-2612 in Hive 0.9.0

本节中曾经记录的配置属性(hive.use.input.primary.region,hive.default.region.name和 hive.region.properties)在 Hive 0.9.0 发行版之前临时存在于主干中,但在发行版之前已被删除。参见HIVE-2612HIVE-2965

对于以前因将其包含在本文档中而造成的任何混乱,我们深表歉意。

命令行界面

hive.cli.print.header
  • 默认值:false

  • 添加于:Hive 0.7.0

是否打印查询输出中的列名。

hive.cli.print.current.db
  • 默认值:false

  • 添加于:Hive 0.8.1

是否在 Hive 提示中包括当前数据库。

HBase StorageHandler

hive.hbase.wal.enabled
  • 默认值:true

  • 添加于:Hive 0.6.0 和HIVE-1383

是否强制写入 HBase 应该强制到预写日志中。禁用此功能可以提高 HBase 写入性能,以免发生崩溃时丢失写入的风险。

hive.hbase.generatehfiles

当 HBaseStorageHandler 应该生成 hfile 而不是对联机表进行操作时为 true。

Hive Web 界面(HWI)(从 Hive 2.2.0 开始删除的组件)

hive.hwi.war.file
  • 默认值:lib/hive-hwi-<version>.war

  • 新增于:Hive 0.3.0(默认值为lib/hive_hwi.war),默认值在 Hive 0.5(HIVE-978HIVE-1183)中更改为lib/hive-hwi-<version>.war

  • 在以下位置删除:Hive 2.2.0 with HIVE-15622

相对于${HIVE_HOME},这将设置 HWI war 文件的路径。 (此配置属性在版本 2.2.0 中已删除.)

hive.hwi.listen.host
  • 默认值:0.0.0.0

  • 添加于:Hive 0.3.0

  • 在以下位置删除:Hive 2.2.0 with HIVE-15622

这是 Hive Web 界面将监听的主机地址。 (此配置属性在版本 2.2.0 中已删除.)

hive.hwi.listen.port
  • 默认值:9999

  • 添加于:Hive 0.3.0

  • 在以下位置删除:Hive 2.2.0 with HIVE-15622

这是 Hive Web 界面将监听的端口。 (此配置属性在版本 2.2.0 中已删除.)

Replication

hive.repl.rootdir
  • 默认值:/usr/hive/repl/

  • 在带有HIVE-15151的 Hive 2.2.0 中添加

这是 HDFS 根目录,Hive 的 REPL DUMP 命令将在此目录下运行,从而创建转储以复制到其他仓库。

hive.repl.replica.functions.root.dir
  • 默认值:/usr/hive/repl/functions

  • 在带有HIVE-16 591的 Hive 3.0.0 中添加

复制仓库上的根目录,repl 子系统将在其中存储来自主仓库的 jar。

hive.repl.partitions.dump.parallelism
  • 默认值:100

  • 在 Hive 3.0.0 中添加HIVE-16895;默认值已用HIVE-17625更改(也在 3.0.0 中)

在 REPL DUMP 期间将用于转储分区数据信息的线程数。

hive.repl.approx.max.load.tasks
  • 默认值:10000

  • 在带有HIVE-16896的 Hive 3.0.0 中添加

提供动态生成下一组任务之前应执行的最大任务数的近似值。该数字是近似值,因为 Hive 会停止在稍高的数字上,原因是某些事件可能导致任务增量超过指定的限制。

hive.repl.dump.metadata.only
  • 默认值:false

  • 在带有HIVE-18352的 Hive 3.0.0 中添加

指示 REPL DUMP 命令是只转储元数据信息(true)还是转储数据元数据(false)。

hive.repl.dump.include.acid.tables
  • 默认值:false

  • 在带有HIVE-18352的 Hive 3.0.0 中添加

指示复制转储是否应包含有关 ACID 表的信息。它应与hive.repl.dump.metadata.only结合使用,以启用 ACID 表的元数据复制,而 ACID 表不需要将相应的事务语义应用于目标。当支持 ACID 表复制时,可以将其删除。

hive.repl.add.raw.reserved.namespace
  • 默认值:false

  • 在带有HIVE-18341的 Hive 3.0.0 中添加

对于在源和目标上具有相同加密密钥的 TDE,允许 Distcp 超级用户访问文件系统中的原始字节,而无需在源上解密然后在目标上加密。

Blobstore(即 Amazon S3)

从版本 2.2.0 开始,添加了一组配置,以在处理存储在 blobstore 系统(例如 Amazon S3)上的表时提高读/写性能。

hive.blobstore.supported.schemes
  • 默认值:s3,s3a,s3n

  • 内建于:Hive 2.2.0 with HIVE-14270

Hive 用于应用特殊读/写性能改进的受支持的 Blobstore 方案列表。

hive.blobstore.optimizations.enabled
  • 默认值:true

  • 内建于:Hive 2.2.0 with HIVE-15121

此参数是全局变量,当在 blobstore 上运行时,它可以进行许多优化。
如果此变量设置为 false,则不会使用某些优化,例如 Configuration Properties#hive.blobstore.use.blobstore.as.scratchdir

hive.blobstore.use.blobstore.as.scratchdir
  • 默认值:false

  • 内建于:Hive 2.2.0 with HIVE-14270

将其设置为 true 可以直接在 blob 存储系统上使用临时目录(这可能会导致性能下降)。

hive.exec.input.listing.max.threads
  • 默认值:0(已禁用)

  • 内建于:Hive 2.2.0 with HIVE-15881

将此设置为 Hive 用于列出文件系统中文件信息的最大线程数,例如文件大小和每个表的文件数(对于 blobstore,建议> 1)。

Test Properties

注意:这是开发人员在运行 Hive 测试时使用的配置属性的不完整列表。对于其他测试属性,搜索“ hive.test”。在hive-default.xml.template 或 HiveConf.java中。另请参见直线查询单元测试

hive.test.mode
  • 默认值:false

  • 添加于:Hive 0.4.0

Hive 是否在测试模式下运行。如果是,它将打开采样并为输出表名添加前缀。

hive.test.mode.prefix
  • 默认值:test_

  • 添加于:Hive 0.4.0

如果 Hive 在测试模式下运行,请使用此字符串为输出表添加前缀。

hive.test.mode.samplefreq
  • 默认值:32

  • 添加于:Hive 0.4.0

如果 Hive 在测试模式下运行并且表没有存储分区,则采样频率。

hive.test.mode.nosamplelist
  • 默认值:(空)

  • 添加于:Hive 0.4.0

如果 Hive 在测试模式下运行,请不要对上面用逗号分隔的表列表进行采样。

hive.exec.submit.local.task.via.child
  • 默认值:true

  • 新增于:Hive 0.14.0 with HIVE-7271

确定本地任务(通常为 mapjoin 哈希表生成阶段)是否在单独的 JVM 中运行(建议true)。避免了产生新的 JVM 的开销,但可能导致内存不足的问题。 false设置仅在运行unit tests时有用。有关详情,请参见HIVE-7271

HCatalog 配置属性

从 Hive 版本 0.11.0 开始,HCatalog 随 Hive 一起安装和配置。 HCatalog 服务器与 Hive 元存储相同。有关 Metastore 配置属性,请参见Hive MetastoreManagement。对于 0.11.0 之前的 Hive 版本,请参阅 HCatalog 0.5.0 文档从 Tarball 安装中的“ Thrift 服务器设置”部分,以获取有关设置 Hive Metastore 配置属性的信息。

提交给 HCatalog 的作业可以指定配置属性,这些属性会影响作业期间的存储,容错和其他类型的行为。有关详情,请参见HCatalog 配置属性

WebHCat 配置属性

有关 WebHCat 的配置,请参见 WebHCat 手册中的Configuration Variables

配置单元配置属性

本文档描述了 Hive 用户配置属性(有时称为* parameters variables options *),并说明了发行新特性的情况。

配置属性的规范列表在HiveConf Java 类中 Management,因此,请参阅HiveConf.java文件以获取 Hive 发行版中可用的配置属性的完整列表。

有关如何使用这些配置属性的信息,请参见Configuring Hive。该文档还在Configuration Variables部分中描述了用于设置 Hive 的 Management 配置属性。 Hive MetastoreManagement描述了元存储的其他配置属性。

Version information

从 Hive 0.14.0(HIVE-7211)开始,配置名称以“ hive”开头。被视为 Hive 系统属性。如果Configuration Properties#hive.conf.validation选项为 true(默认),则任何尝试设置以“配置单元”开头的配置属性的尝试。未注册到 Hive 系统的文件将引发异常。

查询和 DDL 执行

hive.execution.engine
  • 默认值:mr(在 Hive 2.0.0 中已弃用–参见下文)

  • 添加于:Hive 0.13.0 中带有HIVE-6103HIVE-6098

选择执行引擎。选项包括:mr(默认为 Map Reduce),tez(仅对 Hadoop 2 执行Tez)或spark(对 Hive 1.1.0 起执行Spark)。

虽然mr出于历史原因仍是默认引擎,但它本身是历史引擎,在 Hive 2 行(HIVE-12300)中已弃用。可以将其删除而无需进一步警告。

有关更多信息,请参见HiveHive on Spark,有关其配置属性,请参见下面的Tez sectionSpark section

hive.execution.mode
  • 选择查询片段将在容器中还是在 lap 中运行

  • 默认值:container

  • Valid settings

  • 容器:运行容器

    • lap:在任务执行过程中利用 lap 节点
  • 内建于:Hive 2.0 with HIVE-9460

mapred.reduce.tasks
  • 默认值:-1

  • 添加于:Hive 0.1.0

每个作业的默认 reduce 任务数。通常设置为接近可用主机数量的质数。当 mapred.job.tracker 为“本地”时被忽略。 Hadoop 默认将其设置为 1,而 Hive 使用-1 作为其默认值。通过将此属性设置为-1,Hive 将自动计算出减速器的数量。

hive.exec.reducers.bytes.per.reducer
  • 预设值:Hive 0.14.0 之前的1,000,000,000; Hive 0.14.0 及更高版本中为 256 MB(256,000,000)

  • 添加于:Hive 0.2.0;默认值在 0.14.0 中使用HIVE-7158(和HIVE-7917)更改

每个减速器的尺寸。 Hive 0.14.0 和更早版本中的默认值为 1 GB,即,如果 Importing 大小为 10 GB,则将使用 10 个 reducer。在 Hive 0.14.0 及更高版本中,默认值为 256 MB,即,如果 Importing 大小为 1 GB,则将使用 4 个 reducer。

hive.exec.reducers.max
  • 预设值:Hive 0.14.0 之前的999; Hive 0.14.0 及更高版本中的1009

  • 添加于:Hive 0.2.0;默认值在 0.14.0 中使用HIVE-7158(和HIVE-7917)更改

将使用的最大减速器数量。如果配置属性 Configuration Properties#mapred.reduce.tasks 中指定的负数为负,则 Hive 在自动确定减速器数量时将以此为最大减速器数量。

hive.jar.path
  • 默认值:(空)

  • 添加于:Hive 0.2.0 或更早版本

在单独的 jvm 中提交作业时使用的 hive_cli.jar 的位置。

hive.aux.jars.path
  • 默认值:(空)

  • 添加于:Hive 0.2.0 或更早版本

包含用户定义函数(UDF)和 SerDes 的实现的插件 jar 的位置。

hive.reloadable.aux.jars.path
  • 默认值:(空)

  • 新增于:Hive 0.14.0 with HIVE-7553

插件 jar 的位置,可以是逗号分隔的文件夹或 jar。可以通过执行直线重新加载命令来更新(添加,删除或更新)它们,而不必重新启动 HiveServer2.这些 jar 可以像hive.aux.jars.path中的辅助类一样用于创建 UDF 或 SerDes。

hive.exec.scratchdir
  • 默认值:/tmp/${user.name}在 Hive 0.2.0 到 0.8.0 中; /tmp/hive-${user.name}在 Hive 0.8.1 至 0.14.0 中;或/tmp/hive在 Hive 0.14.0 及更高版本中

  • 添加于:Hive 0.2.0;默认值在HIVE-6847HIVE-8143中已在 0.8.1 和 0.14.0 中更改

在 Hive 作业上占用空间。 Hive 使用此目录来存储用于查询的不同 Map/归约阶段的计划,以及存储这些阶段的中间输出。

  • Hive 0.14.0 及更高版本:* Hive 作业的 HDFS 根暂存目录,该目录是使用 write all(733)权限创建的。对于每个连接用户,将使用${ Configuration Properties#hive.scratch.dir.permission }创建一个 HDFS 暂存目录${ hive.exec.scratchdir } /<username>。

另请参见hive.start.cleanup.scratchdirConfiguration Properties#hive.scratchdir.lock 。在本地模式下运行 Hive 时,请参见hive.exec.local.scratchdir

hive.scratch.dir.permission
  • 默认值:700

  • 添加于:Hive 0.12.0 with HIVE-4487

在根临时目录中创建的特定于用户的临时目录的权限。 (请参阅hive.exec.scratchdir。)

hive.exec.local.scratchdir
  • 默认值:/tmp/${user.name}

  • 添加于:Hive 0.10.0 和HIVE-1577

当 Hive 在本地模式下运行时,请占用 Hive 作业的空间。另请参见hive.exec.scratchdir

hive.hadoop.supports.splittable.combineinputformat

是否合并较小的 Importing 文件,以便产生更少的 Map 器。

hive.map.aggr
  • 默认值:Hive 0.3 及更高版本中的truefalse在 Hive 0.2 中

  • 添加于:Hive 0.2.0

是否在 Hive 分组依据查询中使用 Map 侧聚合。

hive.groupby.skewindata
  • 默认值:false

  • 添加于:Hive 0.3.0

数据中是否存在偏斜以优化按查询分组。

hive.groupby.mapaggr.checkinterval
  • 默认值:100000

  • 添加于:Hive 0.3.0

在其后执行分组键/聚合类的大小的行数。

hive.new.job.grouping.set.cardinality
  • 默认值:30

  • 添加于:Hive 0.11.0 和HIVE-3552

是否应启动新的 Map 缩减作业以对集合/汇总/多维数据集进行分组。

对于类似“通过汇总的 a,b,c 从 T 组中选择 a,b,c,count(1)”这样的查询;每行创建四行:(a,b,c),(a,b,null),(a,null,null),(null,null,null)。如果 T 的基数非常高,则可能会导致跨越 Map 缩小边界的爆炸,并且 Map 侧聚合不会做得很好。

此参数决定 Hive 是否应添加其他 map-reduce 作业。如果分组集基数(在上面的示例中为 4)大于此值,则在原始的“ group by”将减小数据大小的假设下添加新的 MR 作业。

hive.mapred.local.mem
  • 默认值:0

  • 添加于:Hive 0.3.0

对于本地模式,存储 Map 器/缩小器。

hive.map.aggr.hash.force.flush.memory.threshold
  • 默认值:0.9

  • 添加于:Hive 0.7.0 和HIVE-1830

Map 端组聚合哈希表将使用的最大内存。如果内存使用量大于此数量,则强制刷新数据。

hive.map.aggr.hash.percentmemory
  • 默认值:0.5

  • 添加于:Hive 0.2.0

Map 端组聚合哈希表将使用的总内存部分。

hive.map.aggr.hash.min.reduction
  • 默认值:0.5

  • 添加于:Hive 0.4.0

如果哈希表大小与 Importing 行之间的比率大于此数字,则将关闭哈希聚合。设置为 1 以确保永远不会关闭哈希聚合。

hive.optimize.groupby
  • 默认值:true

  • 添加于:Hive0.5.0

是否从存储分区/表中启用存储分区组。

hive.optimize.countdistinct
  • 默认值:true

  • 添加于:Hive 3.0.0 with HIVE-16654

是否将计数不同地重写为 2 个阶段,即第一阶段使用具有计数不同键的多个化简器,第二阶段使用不带密钥的单个化简器。

hive.optimize.remove.sq_count_check
  • 默认值:false

  • 添加于:Hive 3.0.0 with HIVE-16793

是否使用 sq_count_check UDF 删除带有按组常数的标量子查询的额外联接。

hive.multigroupby.singlemr

是否通过查询优化多个组以生成单个 M/R 作业计划。如果“多个分组查询”具有公用的“分组关键字”,则会对其进行优化以生成单个 M/R 作业。 (此配置属性在 0.9.0 版中已删除.)

hive.multigroupby.singlereducer
  • 默认值:true

  • 添加到:Hive 0.9.0 和HIVE-2621

是否通过查询优化多个组以生成单个 M/R 作业计划。如果“多个分组查询”具有公用的“分组关键字”,则会对其进行优化以生成单个 M/R 作业。

hive.optimize.cp
  • 默认值:true

  • 添加到:Hive 0.4.0 和HIVE-626

  • 删除于:Hive 0.13.0 with HIVE-4113

是否启用列修剪器。 (此配置属性在版本 0.13.0 中已删除.)

hive.optimize.index.filter
  • 默认值:false

  • 添加于:Hive 0.8.0 和HIVE-1644

是否启用索引自动使用。

注意:有关 Hive 索引的更多配置属性,请参见Configuration Properties#Indexing

hive.optimize.ppd
  • 默认值:true

  • 添加于:Hive 0.4.0 和HIVE-279,默认更改为 true 在 Hive 0.4.0 和HIVE-626

是否启用谓词下推(PPD)。

注意:还要打开 Configuration Properties#hive.optimize.index.filter 以在 PPD 中使用特定于文件格式的索引。

hive.optimize.ppd.storage
  • 默认值:true

  • 添加于:Hive 0.7.0

是否将谓词下推到存储处理程序中。当 hive.optimize.ppd 为 false 时被忽略。

hive.ppd.remove.duplicatefilters
  • 默认值:true

  • 添加于:Hive 0.8.0

在查询优化期间,可以在运算符树中将过滤器下推。如果此配置为 true,则仅下推过滤器保留在运算符树中,并且原始过滤器将被删除。如果此配置为 false,则原始过滤器也会保留在原始位置的操作员树中。

hive.ppd.recognizetransivity
  • 默认值:true

  • 添加于:Hive 0.8.1

是否在等分条件下可传递地复制谓词过滤器。

hive.join.emit.interval
  • 默认值:1000

  • 添加于:Hive 0.2.0

最右边的联接操作数 Hive 中应该缓冲多少行
发出联接结果。

hive.join.cache.size
  • 默认值:25000

  • 添加于:Hive0.5.0

联接表中有多少行(流表除外)
应该缓存在内存中。

hive.mapjoin.bucket.cache.size

Map 联接表中的每个键中应将多少值缓存在内存中。

hive.mapjoin.followby.map.aggr.hash.percentmemory
  • 默认值:0.3

  • 添加于:Hive 0.7.0 和HIVE-1830

Map 端组聚合哈希表使用的总内存部分,此组后跟 Map 联接。

hive.smalltable.filesize 或 hive.mapjoin.smalltable.filesize
  • 默认值:25000000

  • 添加到:具有HIVE-1642的 Hive 0.7.0: hive.smalltable.filesize (由 Hive 0.8.1 中的 hive.mapjoin.smalltable.filesize 替换)

  • 添加于:具有HIVE-2499的 Hive 0.8.1: hive.mapjoin.smalltable.filesize

小表的 Importing 文件大小的阈值(以字节为单位);如果文件大小小于此阈值,它将尝试将普通联接转换为 Map 联接。

hive.mapjoin.localtask.max.memory.usage

该数字表示本地任务将键/值保存到内存中的哈希表中可能要占用的内存量。如果本地任务的内存使用量大于此数量,则本地任务将中止。这意味着小表的数据太大而无法保存在内存中。

hive.mapjoin.followby.gby.localtask.max.memory.usage
  • 默认值:0.55

  • 添加于:Hive 0.7.0 和HIVE-1830

此数字表示当此 Map 连接后跟一个 group by 时,本地任务将键/值保存到内存中的哈希表中需要占用多少内存。如果本地任务的内存使用量大于此数量,则本地任务将自行中止。这意味着小表的数据太大而无法保存在内存中。

hive.mapjoin.check.memory.rows

该数字表示处理完多少行后需要检查内存使用情况。

hive.ignore.mapjoin.hint
  • 默认值:true

  • 添加于:Hive 0.11.0 和HIVE-4042

Hive 是否忽略 mapjoin 提示。

hive.smbjoin.cache.rows

每个 sort-merge-bucket 联接表应在内存中缓存多少个具有相同键值的行。

hive.mapjoin.optimized.keys

MapJoin 哈希表是否应使用优化的(按大小)键,从而使表占用更少的内存。根据键,整个表的内存节省可以达到 5-15%左右。

hive.mapjoin.optimized.hashtable
  • 默认值:true

  • 新增于:Hive 0.14.0 with HIVE-6430

Hive 是否应为 MapJoin 使用内存优化的哈希表。仅适用于Configuration Properties#TezConfiguration Properties#Spark,因为无法优化内存优化的哈希表。 (从 Hive 1.3.0 开始,使用HIVE-11180支持 Spark。)

hive.mapjoin.optimized.hashtable.wbsize
  • 默认值:10485760 (10 * 1024 * 1024)

  • 新增于:Hive 0.14.0 with HIVE-6430

优化的哈希表(请参阅 Configuration Properties#hive.mapjoin.optimized.hashtable )使用缓冲区链来存储数据。这是一个缓冲区大小。如果较大,则 Hashtable 可能会稍快一些,但对于较小的联接,将分配不必要的内存,然后进行修剪。

hive.mapjoin.lazy.hashtable

MapJoin 哈希表是否应按需反序列化值。根据联接实际将要接触的表中的值的多少,它可以通过不为不需要的行创建对象来节省大量内存。如果需要所有行,显然没有任何好处。

hive.hashtable.initialCapacity
  • 默认值:100000

  • 添加于:Hive 0.7.0 和HIVE-1642

如果没有统计信息,或者 Configuration Properties#hive.hashtable.key.count.adjustment 设置为 0,则 mapjoin 哈希表的初始容量。

hive.hashtable.key.count.adjustment
  • 默认值:1.0

  • 新增于:Hive 0.14.0 with HIVE-7616

调整从表和列统计信息得出的 mapjoin 哈希表大小;密钥数量的估计值除以该值。如果值为 0,则不使用统计信息,而是使用 Configuration Properties#hive.hashtable.initialCapacity

hive.hashtable.loadfactor
  • 默认值:0.75

  • 添加于:Hive 0.7.0 和HIVE-1642

在 Mapjoin 的过程中,键/值将保存在哈希表中。此值表示内存哈希表的负载因子。

hive.debug.localtask
  • 默认值:false

  • 添加于:Hive 0.7.0 和HIVE-1642

hive.outerjoin.supports.filters
  • 默认值:true

  • 添加于:Hive 0.7.0 和HIVE-1534

  • 在以下位置删除:Hive 2.2.0 with HIVE-14522

hive.optimize.skewjoin
  • 默认值:false

  • 添加于:Hive0.6.0

是否启用倾斜连接优化。 (另请参阅 Configuration Properties#hive.optimize.skewjoin.compiletime 。)

hive.skewjoin.key
  • 默认值:100000

  • 添加于:Hive0.6.0

确定我们是否在 Connecting 获得了偏斜键。如果在 join 运算符中看到具有相同键的行数超过指定的数量,则我们认为该键为倾斜连接键。

hive.skewjoin.mapjoin.map.tasks
  • 默认值:10000

  • 添加于:Hive0.6.0

确定在后续 Map 连接作业中用于偏斜连接的 Map 任务的数量。它应与 Configuration Properties#hive.skewjoin.mapjoin.min.split 一起使用以执行细粒度的控制。

hive.skewjoin.mapjoin.min.split
  • 默认值:33554432

  • 添加于:Hive0.6.0

通过指定最小拆分大小,确定在后续 Map 连接作业中用于偏斜连接的最多 Map 任务数。它应与 Configuration Properties#hive.skewjoin.mapjoin.map.tasks 一起使用以执行细粒度的控制。

hive.optimize.skewjoin.compiletime
  • 默认值:false

  • 添加于:Hive0.10.0

是否为联接中的表的倾斜键创建单独的计划。这基于存储在元数据中的倾斜键。在编译时,计划分为不同的联接:一个联接用于倾斜的键,另一个联接用于其余的键。然后,对上面生成的两个联接执行并集。因此,除非两个联接表中都存在相同的倾斜键,否则该倾斜键的联接将作为 Map 端联接执行。

此参数与 Configuration Properties#hive.optimize.skewjoin 的主要区别在于,此参数使用元存储中存储的偏斜信息在编译时自身优化计划。如果元数据中没有偏斜信息,则此参数无效。
hive.optimize.skewjoin.compiletimeConfiguration Properties#hive.optimize.skewjoin 均应设置为 true。 (理想情况下, Configuration Properties#hive.optimize.skewjoin 应该重命名为 *** hive.optimize.skewjoin.runtime** *,但是出于向后兼容的目的,尚未完成。)

如果偏斜信息正确存储在元数据中,则 hive.optimize.skewjoin.compiletime 会更改查询计划以处理该问题,而 Configuration Properties#hive.optimize.skewjoin 将是无操作。

hive.optimize.union.remove
  • 默认值:false

  • 添加于:Hive 0.10.0 和HIVE-3276

是否删除联合并在联合和联合上面的文件接收器之间推动运算符。这样可以避免对联合输出进行额外的扫描。这对于联合查询独立有用,并且在 Configuration Properties#hive.optimize.skewjoin.compiletime 设置为 true 时特别有用,因为会插入额外的联合。

如果 Configuration Properties#hive.merge.mapfilesConfiguration Properties#hive.merge.mapredfiles 中的任何一个设置为 true,则触发合并。如果用户将 Configuration Properties#hive.merge.mapfiles 设置为 true 并将 Configuration Properties#hive.merge.mapredfiles 设置为 false,则想法是 reducer 的数量很少,因此文件的数量仍然很少。但是,通过这种优化,我们可能会大幅增加文件数量。因此,我们积极地合并。

hive.mapred.supports.subdirectories
  • 默认值:false

  • 添加于:Hive 0.10.0 和HIVE-3276

正在运行的 Hadoop 版本是否支持表/分区的子目录。如果 Hadoop 版本支持表/分区的子目录,则可以应用许多 Hive 优化。此支持由MAPREDUCE-1501添加。

hive.mapred.mode
  • Default Value:

  • 配置单元 0.x:nonstrict

    • Hive1.x:nonstrict

    • Hive2.x:strict(HIVE-12413)

  • 添加于:Hive 0.3.0

执行 Hive 操作的模式。在strict模式下,不允许运行某些有风险的查询。例如,阻止了全表扫描(请参阅HIVE-10454),而ORDER BY需要 LIMIT 子句。

hive.exec.script.maxerrsize
  • 默认值:100000

  • 添加于:Hive 0.2.0

允许脚本发出标准错误的最大字节数(每个 map-reduce 任务)。这样可以防止失控的脚本将日志分区填充到最大容量。

hive.script.auto.progress
  • 默认值:false

  • 添加于:Hive 0.4.0

Hive Tranform/Map/Reduce 子句是否应自动将进度信息发送给 TaskTracker,以避免任务由于不活动而被杀死。当脚本输出到 stderr 时,Hive 发送进度信息。此选项无需定期生成 stderr 消息,但用户应谨慎行事,因为这可能会阻止脚本中的无限循环被 TaskTracker 杀死。

hive.exec.script.allow.partial.consumption
  • 默认值:false

  • 添加于:Hive0.5.0

启用后,此选项允许用户脚本成功退出,而无需使用标准 Importing 中的所有数据。

hive.script.operator.id.env.var
  • 默认值:HIVE_SCRIPT_OPERATOR_ID

  • 添加于:Hive0.5.0

环境变量的名称,该环境变量在用户的转换函数(用户在查询中指定的自定义 Map 器/化简器)中包含唯一的脚本运算符 ID。

hive.script.operator.env.blacklist
  • 默认值:hive.txn.valid.txns,hive.script.operator.env.blacklist

  • 新增于:Hive 0.14.0 with HIVE-8341

默认情况下,HiveConf 对象中的所有值都将转换为与键名称相同的环境变量(将“.”(点)转换为“ _”(下划线)),并设置为脚本运算符环境的一部分。但是,某些值可能会变大或不适合转换为环境变量。此值提供用逗号分隔的配置值列表,在调用脚本操作符时不会在环境中设置这些配置值。默认情况下,有效的transaction列表会被排除,因为它可能会变大并且有时会被压缩,从而无法很好地转换为环境变量。

Also see:
hive.exec.compress.output
  • 默认值:false

  • 添加于:Hive 0.2.0

这控制是否对查询的最终输出(到本地/ hdfs 文件或 Hive 表)进行压缩。压缩编解码器和其他选项由 Hadoop 配置变量 mapred.output.compress *确定。

hive.exec.compress.intermediate
  • 默认值:false

  • 添加于:Hive 0.2.0

这可控制是否压缩 Hive 在多个 map-reduce 作业之间生成的中间文件。压缩编解码器和其他选项由 Hadoop 配置变量 mapred.output.compress *确定。

hive.exec.parallel
  • 默认值:false

  • 添加于:Hive0.5.0

是否并行执行作业。适用于可以并行运行的 MapReduce 作业,例如,在连接之前处理不同源表的作业。从Hive 0.14开始,也适用于可并行运行的移动任务,例如,在多插入期间移动文件以插入目标。

hive.exec.parallel.thread.number
  • 默认值:8

  • 添加于:Hive0.6.0

最多可以并行执行多少个作业。

hive.exec.rowoffset
  • 默认值:false

  • 添加于:Hive 0.8.0

是否提供行偏移虚拟列。

hive.task.progress
  • 默认值:false

  • 添加于:Hive0.5.0

  • 删除于:Hive 0.13.0 with HIVE-4518

Hive 是否应在执行期间定期更新任务进度计数器。启用此功能可以在作业跟踪器中更紧密地监视任务进度,但可能会导致性能下降。对于 Configuration Properties#hive.exec.dynamic.partition 设置为 true 的作业,此标志自动设置为 true。 (此配置属性在版本 0.13.0 中已删除.)

hive.counters.group.name
  • 默认值:HIVE

  • 新增于:Hive 0.13.0 with HIVE-4518

查询执行期间使用的计数器的计数器组名称。计数器组用于内部 Hive 变量(CREATED_FILE,FATAL_ERROR 等)。

hive.exec.pre.hooks
  • 默认值:(空)

  • 添加于:Hive 0.4.0

将为每个语句调用的逗号分隔的预执行钩子列表。将预执行钩子指定为实现 org.apache.hadoop.hive.ql.hooks.ExecuteWithHookContext 接口的 Java 类的名称。

hive.exec.post.hooks
  • 默认值:(空)

  • 添加于:Hive0.5.0

将为每个语句调用的逗号分隔的执行后钩子列表。将执行后钩子指定为实现 org.apache.hadoop.hive.ql.hooks.ExecuteWithHookContext 接口的 Java 类的名称。

hive.exec.failure.hooks
  • 默认值:(空)

  • 添加于:Hive 0.8.0

每个语句要调用的逗号分隔的失败挂接列表。将失败时钩子指定为实现 org.apache.hadoop.hive.ql.hooks.ExecuteWithHookContext 接口的 Java 类的名称。

hive.merge.mapfiles
  • 默认值:true

  • 添加于:Hive 0.4.0

在仅 Map 作业的末尾合并小文件。

hive.merge.mapredfiles
  • 默认值:false

  • 添加于:Hive 0.4.0

在 map-reduce 作业结束时合并小文件。

hive.mergejob.maponly
  • 默认值:true

  • 添加于:Hive0.6.0

  • 在以下位置删除:Hive 0.11.0

如果支持 CombineHiveInputFormat,请尝试生成用于合并文件的仅 Map 作业。 (此配置属性在版本 0.11.0 中已删除.)

hive.merge.size.per.task
  • 默认值:256000000

  • 添加于:Hive 0.4.0

作业结束时合并文件的大小。

hive.merge.smallfiles.avgsize
  • 默认值:16000000

  • 添加于:Hive0.5.0

当作业的平均输出文件大小小于此数目时,Hive 将启动另一个 map-reduce 作业以将输出文件合并为更大的文件。如果 hive.merge.mapfiles 为 true,则仅对仅 Map 作业执行此操作;如果 hive.merge.mapredfiles 为 true,则仅对 map-reduce 作业执行此操作。

hive.heartbeat.interval
  • 默认值:1000

  • 添加于:Hive 0.4.0

在此间隔之后发送心跳-由 mapjoin 和 filter 运算符使用。

hive.auto.convert.join
  • 默认值:false in 0.7.0 to 0.10.0; true在 0.11.0 及更高版本中(HIVE-3297)

  • HIVE-1642中添加:0.7.0

Hive 是否启用基于 Importing 文件大小的有关将普通联接转换为 mapjoin 的优化。 (请注意,hive-default.xml.template 在 Hive 0.11.0 到 0.13.1 中错误地将默认值设置为 false.)

hive.auto.convert.join.noconditionaltask
  • 默认值:true

  • 新增:带有HIVE-3784的 0.11.0(带有HIVE-4146的默认值更改为 true)

Hive 是否启用基于 Importing 文件大小的有关将普通联接转换为 mapjoin 的优化。如果启用此参数,并且 n 路联接的 n-1 个表/分区的大小总和小于 hive.auto.convert.join.noconditionaltask.size 指定的大小,则直接转换联接到 mapjoin(没有条件任务)。

hive.auto.convert.join.noconditionaltask.size
  • 默认值:10000000

  • 添加于:0.11.0 和HIVE-3784

如果关闭 hive.auto.convert.join.noconditionaltask,则此参数无效。但是,如果启用了该连接,并且 n 向联接的表/分区的 n-1 个大小的总和小于此大小,则该联接将直接转换为 mapjoin(没有条件任务)。默认值为 10MB。

hive.auto.convert.join.use.nonstaged
  • 默认值:false

  • 添加到:0.13.0 和HIVE-6144(默认为true,但在 0.13.0 中也更改为falseHIVE-6749)

对于条件联接,如果可以将来自小别名的 Importing 流直接应用到联接运算符,而无需进行过滤或投影,则无需通过 Map 的本地任务在分布式缓存中预备别名。当前,这不适用于矢量化或 Tez 执行引擎。

hive.merge.nway.joins
  • 默认值:true

  • 新增于:2.2.0 with HIVE-15655

对于相同条件下的多个联接,将联接合并在一起成为单个联接运算符。在进行大型混洗连接以避免重新混洗阶段时,这很有用。在 Tez 中禁用此选项通常会在左侧外部联接或常规 Snowflake 模式的情况下提供更快的联接算法。

hive.udtf.auto.progress
  • 默认值:false

  • 添加于:Hive0.5.0

使用 UDTF 时,Hive 是否应自动将进度信息发送给 TaskTracker,以防止任务由于不活动而被杀死。用户应保持谨慎,因为这可能会阻止 TaskTracker 终止具有无限循环的任务。

hive.mapred.reduce.tasks.speculative.execution
  • 默认值:true

  • 添加于:Hive0.5.0

是否应该对减速器进行投机执行。

hive.exec.counters.pull.interval
  • 默认值:1000

  • 添加于:Hive0.6.0

轮询 JobTracker 以获取计数器的时间间隔。越小,作业跟踪器上的负载就越大,捕获的粒度就越小。

hive.enforce.bucketing
  • Default Value:

  • 配置单元 0.x:false

    • Hive1.x:false

    • Hive 2.x:已删除,有效地使其始终为真(HIVE-12331)

  • 添加于:Hive0.6.0

是否执行bucketing。如果true,则在插入表时会强制执行存储。

设置为true以支持 Hive 0.14.0 和 1.x.x 中的插入...值,更新和删除个事务。有关打开 HiveTransaction 所需的参数的完整列表,请参阅 Configuration Properties#hive.txn.manager

hive.enforce.sorting
  • Default Value:

  • 配置单元 0.x:false

    • Hive1.x:false

    • Hive 2.x:已删除,有效地使其始终为真(HIVE-12331)

  • 添加于:Hive0.6.0

是否执行排序。如果为 true,则在插入表时会强制进行排序。

hive.optimize.bucketingsorting
  • 默认值:true

  • 添加于:Hive 0.11.0 和HIVE-4240

如果 Configuration Properties#hive.enforce.bucketingConfiguration Properties#hive.enforce.sorting 为 true,则不要创建用于对以下形式的查询执行存储分区/排序的 reducer:

insert overwrite table T2 select * from T1;

其中 T1 和 T2 通过相同的键存储/分类到相同数量的存储桶中。 (在 Hive 2.0.0 和更高版本中,此参数不取决于 Configuration Properties#hive.enforce.bucketingConfiguration Properties#hive.enforce.sorting 。)

hive.optimize.reducededuplication
  • 默认值:true

  • 添加于:Hive0.6.0

如果数据已经由需要再次使用的同一键聚类,则删除多余的 map-reduce 作业。应始终将其设置为 true。由于它是一项新功能,因此已使其可配置。

hive.optimize.reducededuplication.min.reducer
  • 默认值:4

  • 添加于:Hive 0.11.0 和HIVE-2340

减少重复数据删除通过将子 RS 的 key/parts/reducer-num 移到父 RS 来合并两个 RS(“减少接收器运算符*”)。这意味着,如果子 RS 的 reducer-num 固定(按 Sequences 或强制分批排序)且较小,则可能会生成非常慢的单个 MR。如果减速器数量小于指定值,则将禁用优化。

hive.optimize.correlation
  • 默认值:false

  • 添加于:Hive 0.12.0 with HIVE-2206

利用查询内关联。有关详细信息,请参见Correlation Optimizer设计文档。

hive.optimize.limittranspose

是否通过左/右外部联接或联合来施加限制。如果该值为 true,并且外部 Importing 的大小减小到足够的程度(如hive.optimize.limittranspose.reductionpercentagehive.optimize.limittranspose.reductiontuples所指定),则将限制推入外部 Importing 或并集;为了保持语义上正确,限制也保持在联接或联合之上。

hive.optimize.limittranspose.reductionpercentage

hive.optimize.limittranspose为 true 时,此变量指定优化器为应用规则而应获得的联接的外部 Importing 或联合的 Importing 的大小的最小百分比(分数)减小。

hive.optimize.limittranspose.reductiontuples

hive.optimize.limittranspose为 true 时,此变量指定优化程序为应用规则而应获得的联接的外部 Importing 或联合的 Importing 的 Tuples 数量的最小减少量。

hive.optimize.filter.stats.reduction
  • 默认值:false

  • 添加于:Hive 2.1.0 和HIVE-13269

是否在使用列统计信息的过滤器运算符中简化比较表达式。

hive.optimize.sort.dynamic.partition
  • 默认值:Hive 0.13.0 和 0.13.1 中的true; Hive 0.14.0 及更高版本中的false(HIVE-8151)

  • 新增于:Hive 0.13.0 with HIVE-6455

启用后,动态分区列将进行全局排序。这样,我们就只能为精简器中的每个分区值保持一个记录写入器打开,从而减少精简器上的内存压力。

hive.cbo.enable

设置为 true 时,将启用使用 Calcite 框架的基于成本的优化器

hive.cbo.returnpath.hiveop

如果为 true,则此对 CBO 逻辑计划的优化将添加规则以对联接键引入* not null *过滤。控制方解石计划到 Hive 运算符的转换。设置为 false 时,覆盖 hive.optimize.remove.identity.project。

hive.cbo.cnf.maxnodes
  • 默认值:-1

  • 添加于:Hive 2.1.1 和HIVE-14021

转换为合取范式(CNF)时,如果表达式超过指定的阈值,则失败;阈值以节点(叶和内部节点)的数量表示。默认值为-1,不设置阈值。

hive.optimize.null.scan
  • 默认值:true

  • 新增于:Hive 0.14.0 with HIVE-7385

设为 true 时,此优化将尝试不扫描表中的任何行,这些行可以在查询编译时确定为不生成任何行(例如,其中 1 = 2,其中 false,限制 0 等)。

hive.exec.dynamic.partition
  • 默认值:Hive 0.9.0 之前的false; Hive 0.9.0 及更高版本中的true(HIVE-2835)

  • 添加于:Hive0.6.0

在 DML/DDL 中是否允许dynamic partitions

hive.exec.dynamic.partition.mode
  • 默认值:strict

  • 添加于:Hive0.6.0

strict模式下,用户必须至少指定一个静态分区,以防用户意外覆盖所有分区。在nonstrict模式下,所有分区均允许为dynamic

设置为nonstrict以支持插入...值,更新和删除个事务(Hive 0.14.0 及更高版本)。有关打开 HiveTransaction 所需的参数的完整列表,请参阅 Configuration Properties#hive.txn.manager

hive.exec.max.dynamic.partitions
  • 默认值:1000

  • 添加于:Hive0.6.0

总共最多可以创建dynamic partitions个。

hive.exec.max.dynamic.partitions.pernode
  • 默认值:100

  • 添加于:Hive0.6.0

每个 Map 器/化简器节点中允许创建的最大dynamic partitions个数。

hive.exec.max.created.files
  • 默认值:100000

  • 添加于:Hive 0.7.0

MapReduce 作业中所有 Map 器/还原器创建的 HDFS 文件的最大数量。

hive.exec.default.partition.name
  • 默认值:__HIVE_DEFAULT_PARTITION__

  • 添加于:Hive0.6.0

如果动态分区列的值为空/空字符串或任何其他无法转义的值,则为默认分区名称。此值不得包含 HDFS URI 中使用的任何特殊字符(例如':','%','/'等)。用户必须注意,动态分区值不应包含该值,以免造成混淆。

hive.fetch.output.serde
  • 默认值:org.apache.hadoop.hive.serde2.DelimitedJSONSerDe

  • 添加于:Hive 0.7.0

FetchTask 使用的 SerDe 序列化提取输出。

hive.exec.mode.local.auto
  • 默认值:false

  • 添加于:Hive 0.7.0 和HIVE-1408

让 Hive 确定是否自动以本地模式运行。

hive.exec.mode.local.auto.inputbytes.max
  • 默认值:134217728

  • 添加于:Hive 0.7.0 和HIVE-1408

Configuration Properties#hive.exec.mode.local.auto 为 true 时,对于本地模式,Importing 字节应小于此值。

hive.exec.mode.local.auto.tasks.max

Configuration Properties#hive.exec.mode.local.auto 为 true 时,对于本地模式,任务数应少于此数目。在 Hive 0.9.0 中替换为 Configuration Properties#hive.exec.mode.local.auto.input.files.max.

hive.exec.mode.local.auto.input.files.max
  • 默认值:4

  • 添加到:Hive 0.9.0 和HIVE-2651

Configuration Properties#hive.exec.mode.local.auto 为 true 时,对于本地模式,任务数应少于此数目。

hive.exec.drop.ignorenonexistent

如果 DROP TABLE/VIEW/PARTITION/INDEX/TEMPORARY FUNCTION 指定了不存在的表/视图,请不要报告错误。从 Hive 0.13.0 开始也适用于permanent functions

hive.exec.show.job.failure.debug.info
  • 默认值:true

  • 添加于:Hive 0.7.0

如果作业失败,是否在 CLI 中提供指向失败次数最多的任务的链接,以及调试提示(如果适用)。

hive.auto.progress.timeout
  • 默认值:0

  • 添加于:Hive 0.7.0

脚本/ UDTF 运算符运行自动进度器的时间(以秒为单位)。永远设为 0.

hive.table.parameters.default
  • 默认值:(空)

  • 添加于:Hive 0.7.0

新建表的默认属性值。

hive.variable.substitute
  • 默认值:true

  • 添加于:Hive 0.7.0

这样可以使用${var} ${system:var}和${env:var}这样的语法启用substitution

hive.error.on.empty.partition
  • 默认值:false

  • 添加于:Hive 0.7.0

如果动态分区插入生成空结果,是否引发异常。

hive.exim.uri.scheme.whitelist
  • 预设值:Hive 2.2.0 之前的hdfs,pfile; Hive 2.2.0 及更高版本中的hdfs,pfile,file

  • 添加于:Hive 0.8.0 中带有HIVE-1918;在 Hive 2.2.0 中使用HIVE-15151更改了默认设置

以逗号分隔的用于导入和导出的可接受 URI 方案列表。

hive.limit.row.max.size
  • 默认值:100000

  • 添加于:Hive 0.8.0

为简单的 LIMIT 尝试使用较小的数据子集时,我们需要保证每行至少有多少大小。

hive.limit.optimize.limit.file
  • 默认值:10

  • 添加于:Hive 0.8.0

当尝试使用较小的数据子集进行简单的 LIMIT(限制)时,我们可以采样的最大文件数。

hive.limit.optimize.enable
  • 默认值:false

  • 添加于:Hive 0.8.0

是否启用优化以首先尝试简单 LIMIT 的较小数据子集。

hive.limit.optimize.fetch.max
  • 默认值:50000

  • 添加于:Hive 0.8.0

如果是提取查询,则简单 LIMIT 的较小数据子集所允许的最大行数。插入查询不受此限制的限制。

hive.rework.mapredwork
  • 默认值:false

  • 添加于:Hive 0.8.0

是否应该返工 Map 的工作。 SymlinkTextInputFormat 首先引入了此功能,以便在编译时用实际路径替换符号链接文件。

hive.sample.seednumber
  • 默认值:0

  • 添加于:Hive 0.8.0

用于百分比采样的数字。通过更改此数字,用户将更改采样数据的子集。

hive.autogen.columnalias.prefix.label
  • 默认值:_c

  • 添加于:Hive 0.8.0

自动生成列别名时用作前缀的字符串。默认情况下,前缀标签将附加列位置编号以形成列别名。如果在没有显式别名的 select 子句中使用聚合函数,则会发生自动生成。

hive.autogen.columnalias.prefix.includefuncname
  • 默认值:false

  • 添加于:Hive 0.8.0

是否在 Hive 自动生成的列别名中包括函数名称。

hive.exec.perf.logger
  • 默认值:org.apache.hadoop.hive.ql.log.PerfLogger

  • 添加于:Hive 0.8.0

类负责记录 Client 端性能 Metrics。必须是 org.apache.hadoop.hive.ql.log.PerfLogger 的子类。

hive.start.cleanup.scratchdir
  • 默认值:false

  • 添加到:Hive 0.8.1 中带有HIVE-2181

  • 修正于:Hive 1.3.0 with HIVE-10415

在启动 Hive 服务器(或 HiveServer2)时清理 Hive scratch directory。对于多用户环境,这不是一个选项,因为它会意外删除正在使用的暂存目录。

hive.scratchdir.lock
  • 默认值:false

  • 新增内容:带有HIVE-13429的 Hive 1.3.0 和 2.1.0(但不是 2.0.x)

为 true 时,在草稿目录中保留一个锁定文件。如果一个 Hive 进程死了,并且不小心留下了一个悬空的暂存目录,则cleardanglingscratchdir tool将其删除。

如果为 false,则不会创建锁定文件,因此cleardanglingscratchdir tool无法删除任何悬空的暂存目录。

hive.output.file.extension
  • 默认值:(空)

  • 添加于:Hive 0.8.1

字符串,用作输出文件的文件 extensions。如果未设置,则默认为文本文件的编解码器 extensions(例如“ .gz”),否则为无 extensions。

hive.insert.into.multilevel.dirs
  • 默认值:false

  • 添加于:Hive 0.8.1

是否插入到多层嵌套目录中,例如“从表中插入目录'/ HIVEFT25686/chinna /'”。

插入不存在的嵌套目录时,可能会显示以下错误:
*错误 org.apache.hadoop.hive.ql.exec。任务:失败,异常无法重命名:\ *

要启用自动子目录生成,请设置“ hive.insert.into.multilevel.dirs = true”

hive.conf.validation
  • 默认值:true

  • 添加于:Hive 0.10.0 和HIVE-2848

为注册的 Hive 配置启用类型检查。

从 Hive 0.14.0(HIVE-7211)开始,配置名称以“ hive”开头。被视为 Hive 系统属性。如果 hive.conf.validation 为 true(默认值),则任何尝试设置以“ hive”开头的配置属性的尝试。未注册到 Hive 系统的文件将引发异常。

hive.fetch.task.conversion
  • 默认值:Hive 0.10.0 至 0.13.1 中的minimal,Hive 0.14.0 及更高版本中的more

  • 添加于:Hive 0.10.0 和HIVE-2925;在 Hive 0.14.0 中使用HIVE-7397更改了默认设置

某些选择查询可以转换为单个 FETCH 任务,从而最大程度地减少了 await 时间。当前,查询应该是单源的,不包含任何子查询,并且不应该具有任何聚合或区分(这会引起 RS – ReduceSinkOperator,需要 MapReduce 任务),横向视图和联接。

支持的值是 none,minimalmore

  1. none:禁用 hive.fetch.task.conversion(在 Hive 0.14.0 中使用HIVE-8389添加的值)
  2. minimal:SELECT *,分区列(WHERE 和 HAVING 子句)上的 FILTER,仅 LIMIT
  3. more:仅 SELECT,FILTER,LIMIT(包括 TABLESAMPLE,虚拟列)

more”可以在 SELECT 子句中采用任何类型的表达式,包括 UDF。
(尚不支持 UDTF 和侧视图–参见HIVE-5718。)

hive.map.groupby.sorted
  • Default Value:

  • 配置单元 0.x 和 1.x:false

  • 添加于:Hive 0.10.0 和HIVE-3432

如果表的存储/排序属性与分组键完全匹配,则是否通过使用 BucketizedHiveInputFormat 在 Map 器中执行分组依据。唯一的缺点是它将 Map 器的数量限制为文件的数量。

hive.map.groupby.sorted.testmode
  • 默认值:false

  • 添加于:Hive 0.11.0 和HIVE-4281

  • 删除于:Hive 2.0.0 with HIVE-12325

如果表的存储/排序属性与分组键完全匹配,则是否通过使用 BucketizedHiveInputFormat 在 Map 器中执行分组依据。如果设置了测试模式,则不会转换计划,但会将查询属性设置为表示该计划。 (此配置属性在 2.0.0 版中已删除.)

hive.groupby.orderby.position.alias
  • 默认值:false

  • 添加于:Hive 0.11.0 和HIVE-581

  • 弃用于:Hive 2.2.0 with HIVE-15797

是否在查询的GROUP BYORDER BY子句中启用使用列位置别名(自 Hive 2.2.0 起不推荐使用;改为使用Configuration Properties#hive.groupby.position.aliasConfiguration Properties#hive.orderby.position.alias)。

hive.groupby.position.alias
  • 默认值:false

  • 内建于:Hive 2.2.0 with HIVE-15797

是否在GROUP BY中启用使用列位置别名。

hive.orderby.position.alias
  • 默认值:true

  • 内建于:Hive 2.2.0 with HIVE-15797

是否在ORDER BY中启用使用列位置别名。

hive.fetch.task.aggr
  • 默认值:false

  • 添加于:具有HIVE-4002的 Hive 0.12.0(具有HIVE-5793的 Hive 0.13.0 中添加了说明)

没有 group-by 子句的聚合查询(例如select count(*) from src)在单个 reduce 任务中执行最终聚合。如果此参数设置为true,则 Hive 将最后的聚合阶段委派给提取任务,这可能会减少查询时间。

hive.fetch.task.conversion.threshold
  • 默认值:Hive 0.13.0 和 0.13.1 中的-1,Hive 0.14.0 和更高版本中的1073741824(1 GB)

  • 添加于:Hive 0.13.0 中带有HIVE-3990;在 Hive 0.14.0 中使用HIVE-7397更改了默认设置

应用hive.fetch.task.conversion的 Importing 阈值(以字节为单位)。如果目标表是本地表,则 Importing 长度是通过文件长度的总和来计算的。如果不是本地的,则表的存储处理程序可以选择实现 org.apache.hadoop.hive.ql.metadata.InputEstimator 接口。负阈值装置hive.fetch.task.conversion被应用而没有任何 Importing 长度阈值。

hive.limit.pushdown.memory.usage
  • 默认值:-1

  • 添加于:Hive 0.12.0 with HIVE-3562

RS 运算符中用于前 K 个选择的哈希中使用的最大内存。默认值“ -1”表示没有限制。

hive.cache.expr.evaluation
  • 默认值:true

  • 添加于:Hive 0.12.0 with HIVE-4209

  • 错误修复:Hive 0.14.0 和HIVE-7314(在另一个 UDF 或 Hive 函数中使用 UDF 时,表达式缓存不起作用)

如果为 true,将缓存两次或更多次引用的确定性表达式的求值结果。例如,在类似“ ...,其中键 10> 10 或键 10 = 0”的过滤条件中,表达式“键 10”将被评估/缓存一次,并重新用于以下表达式(“键 10 = 0”)。当前,这仅适用于 select 或 filter 运算符中的表达式。

hive.resultset.use.unique.column.names
  • 默认值:true

  • 新增于:Hive 0.13.0 with HIVE-6687

如果需要,通过使用表别名限定列名,使结果集中的列名唯一。对于“选择*”类型的查询,或者如果查询明确使用表别名“选择 r1.x ..”,则将表别名添加到列名中。

hive.support.quoted.identifiers
  • 默认值:column

  • 新增于:Hive 0.13.0 with HIVE-6013

是否使用带引号的标识符。值可以是“ none”或“ column”。

column:列名可以包含任何 Unicode 字符。反引号(``'')中指定的任何列名均按字面意义对待。在反引号字符串中,使用双反引号(````)表示反引号字符。
none:标识符中仅字母数字和下划线字符有效。带反引号的名称被解释为正则表达式。这也是 0.13.0 之前的版本中的行为。

hive.plan.serialization.format
  • 默认值:kryo

  • 新增于:Hive 0.13.0 with HIVE-1511

  • 删除了一个值:不再支持带有HIVE-12609的 Hive 2.0.0 javaXML

Client 端和任务节点之间的查询计划格式序列化。支持的两个值是kryojavaXML(在 Hive 2.0.0 之前)。 Kryo 是默认设置(从 Hive 2.0.0 开始,Kryo 是唯一受支持的值)。

hive.exec.check.crossproducts
  • 默认值:true

  • 新增于:Hive 0.13.0 with HIVE-6643

检查查询计划是否包含交叉产品。如果有一个,则向会话的控制台输出警告。

hive.display.partition.cols.separately
  • 默认值:true

  • 新增于:Hive 0.13.0 with HIVE-6689

在较旧的 Hive 版本(0.10 和更早版本)中,在DESCRIBE TABLE中显示列时,没有区分分区列或非分区列。从版本 0.12 开始,它们分别显示。如果需要,此标志将使您获得旧的行为。参见HIVE-6689 修补程序中的测试用例。

hive.limit.query.max.table.partition

为了保护群集,这控制了每个分区表可以扫描多少个分区。默认值“ -1”表示没有限制。分区限制不影响仅元数据查询。

hive.files.umask.value

已淘汰:Hive 创建的文件夹的dfs.umask值。

hive.optimize.sampling.orderby
  • 默认值:false

  • 添加于:Hive 0.12.0 with HIVE-1402

对 order-by 子句使用采样以并行执行。

hive.optimize.sampling.orderby.number
  • 默认值:1000

  • 添加于:Hive 0.12.0 with HIVE-1402

使用 hive.optimize.sampling.orderby = true 时,要获得用于计算分区键的 samples 总数。

hive.optimize.sampling.orderby.percent
  • 默认值:0.1

  • 添加于:Hive 0.12.0 with HIVE-1402

使用 hive.optimize.sampling.orderby = true 时,选择行的概率。

hive.compat
  • 默认值:0.12

  • 新增于:Hive 0.13.0 with HIVE-6012

通过设置所需的向后兼容性级别,启用(可配置)不赞成使用的算术运算行为。默认值为数字运算提供了向后兼容的返回类型。其他受支持的发行版号为数字运算提供了新的行为,例如 0.13 给出了HIVE-5356中引入的更多与 SQL 兼容的返回类型。

值“最新”指定最新的支持级别。当前,这仅影响整数的除法。

设置为 0.12(默认值)可保持 Hive 0.12 和更早版本的除法行为:int/int = double。
设置为 0.13 可在 Hive 0.13 和更高版本中进行除法运算:int/int =十进制。

无效的设置将导致错误消息,并且将使用默认支持级别。

hive.optimize.constant.propagation
  • 默认值:true

  • 新增于:Hive 0.14.0 with HIVE-5771

是否启用constant propagation优化器。

hive.entity.capture.transform

启用捕获转换 URI 的编译器读取实体,可以在语义和 exec 钩子中进行内部检查。

hive.support.sql11.reserved.keywords
  • 默认值:true

  • 新增于:Hive 1.2.0 with HIVE-6617

是否启用对 SQL2011 保留关键字的支持。启用后,将支持 SQL2011 reserved keywords(的一部分)。

hive.log.explain.output

启用后,将在 log4j INFO 级别和 HiveServer2 WebUI/Drilldown/Query Plan 中记录查询的EXPLAIN EXTENDED输出。

Hive 3.1.0开始,此配置属性仅记录到 log4j INFO。要从 Hive 3.1.0 开始将EXPLAIN EXTENDED输出记录在 WebUI /深入查询/查询计划中,请使用 Configuration Properties#hive.server2.webui.explain.output

hive.explain.user
  • 默认值:false

  • 新增于:Hive 1.2.0 with HIVE-9780

是否在用户级别显示解释结果。启用后,将在用户级别记录查询的 EXPLAIN 输出。 (仅限 Tez.有关 Spark,请参见hive.spark.explain.user。)

hive.typecheck.on.insert
  • 默认值:true

  • 添加于:Hive 0.12.0,带有HIVE-5297的插入分区

  • 扩展于:Hive 1.2 和HIVE-10307进行更改,描述分区等。

是否检查,转换和规范化分区规范中指定的分区值以符合分区列类型。

hive.exec.temporary.table.storage
  • 默认值:default

  • 添加于:Hive 1.1.0 和HIVE-7313

期望[+3391++3392++3393+]中的一个。

定义temporary tables的存储策略。在内存,ssd 和默认值之间选择。参见HDFS 存储类型和存储策略

hive.optimize.distinct.rewrite
  • 默认值:true

  • 新增于:Hive 1.2.0 with HIVE-10568

如果适用,此优化会将distinct aggregates从单阶段聚合重写为多阶段聚合。这并非在所有情况下都是最佳的。理想情况下,是否触发它应该是基于成本的决策。在 Hive 为此确定成本模型之前,这是配置驱动的。

hive.optimize.point.lookup
  • 默认值:true

  • 新增于:Hive 2.0.0 with HIVE-11461

是否将 Filter 运算符中的 OR 子句转换为 IN 子句。

hive.optimize.point.lookup.min
  • 默认值:31

  • 新增于:Hive 2.0.0 with HIVE-11573

转换为 IN 子句所需的 OR 子句的最小数量。

hive.allow.udf.load.on.demand
  • 默认值:false

  • 添加于:Hive 2.1.0 和HIVE-13596

是否启用按需从 metastore 加载 UDF;这与 HS2 最为相关,并且是 Hive 1.2 之前的默认行为。

hive.async.log.enabled
  • 默认值:true

  • 添加于:Hive 2.1.0 和HIVE-13027

是否启用 Log4j2 的异步日志记录。异步日志记录可以显着提高性能,因为日志记录将在单独的线程中处理,该线程使用 LMAX 干扰者队列来缓冲日志消息。

有关优缺点,请参见https://logging.apache.org/log4j/2.x/manual/async.html

hive.msck.repair.batch.size
  • 默认值:0

  • 内建于:Hive 2.2.0 with HIVE-12077

批量运行MSCK 维修台命令。如果存在大量未跟踪的分区,则通过为属性配置一个值,它将在内部批量执行。该属性的默认值为零,这意味着它将立即执行所有分区。

hive.exec.copyfile.maxnumfiles
  • 默认值:1

  • 新增于:Hive 2.3.0 with HIVE-14864

Hive 在目录之间进行 SequencesHDFS 复制所使用的最大文件数。分布式副本(distcp)将代替大量文件使用,以便可以更快地完成副本。

hive.exec.copyfile.maxsize
  • 预设值:32 MB

  • 添加于:Hive 1.1.0 和HIVE-8750

Hive 在目录之间执行单个 HDFS 复制的最大文件大小(以字节为单位)。对于较大的文件,将使用分布式副本(distcp),以便可以更快地完成副本。

hive.exec.stagingdir
  • 默认值:.hive-staging

  • 在 Hive1.1.0 和HIVE-8750中添加

将在表位置内部创建的目录名称,以支持 HDFS 加密。除只读表外,它用hive.exec.scratchdir代替查询结果。在所有情况下hive.exec.scratchdir仍用于其他临时文件,例如工作计划。

hive.query.lifetime.hooks
  • 默认值:(空)

  • 新增于:Hive 2.3.0 with HIVE-14340

用逗号分隔的实现 QueryLifeTimeHook 的钩子列表。这些将在查询编译之前/之后以及查询执行之前/之后按照指定的 Sequences 触发。从 Hive 3.0.0(HIVE-16363)开始,此配置可用于指定 QueryLifeTimeHookWithParseHooks 的实现。如果指定了它们,则它们将在与 QueryLifeTimeHooks 相同的位置被调用,并将在查询前后解析期间被调用。

hive.remove.orderby.in.subquery
  • 默认值:true

  • 添加于:Hive 3.0.0 with HIVE-6348

如果设置为 true,则子查询和视图中的排序/排序不受限制。

SerDes 和 I/O

SerDes

hive.script.serde
  • 默认值:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe

  • 添加于:Hive 0.4.0

用于向用户脚本传输 Importing 数据和从用户脚本读取输出数据的默认 SerDe。

hive.script.recordreader
  • 默认值:org.apache.hadoop.hive.ql.exec.TextRecordReader

  • 添加于:Hive 0.4.0

用于从用户脚本读取数据的默认记录读取器。

hive.script.recordwriter
  • 默认值:org.apache.hadoop.hive.ql.exec.TextRecordWriter

  • 添加于:Hive0.5.0

用于将数据写入用户脚本的默认记录编写器。

hive.default.serde
  • 默认值:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe

  • 添加于:Hive 0.14 中带有HIVE-5976

默认的 SerDe Hive 将用于未指定 SerDe 的存储格式。当前未指定 SerDe 的存储格式包括'TextFile,RcFile'。

有关存储格式和 SerDes 的更多信息,请参见本地 SerDes 的注册

hive.lazysimple.extended_boolean_literal
  • 默认值:false

  • 添加于:Hive 0.14 中带有HIVE-3635

LazySimpleSerDe使用此属性来确定除'TRUE'和'FALSE'外,是否还将'T','t','F','f','1'和'0'视为扩展的合法布尔 Literals。 。默认值为false,这意味着只有'TRUE'和'FALSE'被视为合法的布尔 Literals。

I/O

hive.io.exception.handlers
  • 默认值:(空)

  • 添加于:Hive 0.8.1

I/O 异常处理程序类名称的列表。这用于构造一个异常处理程序列表,以处理记录读取器引发的异常。

hive.input.format
  • 默认值:org.apache.hadoop.hive.ql.io.CombineHiveInputFormat

  • 添加于:Hive0.5.0

默认 Importing 格式。如果遇到 CombineHiveInputFormat 问题,请将其设置为 HiveInputFormat。

Also see:

File Formats

hive.default.fileformat
  • 默认值:TextFile

  • 添加于:Hive 0.2.0

CREATE TABLE 语句的默认文件格式。选项是 TextFile,SequenceFile,RCfile,ORC 和 Parquet。

用户可以明确地说出CREATE TABLE ...存储为 TEXTFILE | SEQUENCEFILE | RCFILE | ORC | AVRO | INPUTFORMAT ... OUTPUTFORMAT ...来覆盖。 (在 Hive 0.6.0 中添加了 RCFILE,在 0.11.0 中添加了 ORC,在 0.14.0 中添加了 AVRO,在 2.3.0 中添加了 Parquet)。有关详细信息,请参见行格式,存储格式和 SerDe

hive.default.fileformat.managed
  • 默认值:none

  • 新增于:Hive 1.2.0 with HIVE-9915

CREATE TABLE 语句的默认文件格式仅适用于托管表。外部表将以Configuration Properties#hive.default.fileformat指定的格式创建。选项为 none,TextFile,SequenceFile,RCfile,ORC 和 Parquet(自 Hive 2.3.0 起)。保留此 null 将导致对所有本机表使用 hive.default.fileformat。对于 nonlocal 表,文件格式由存储处理程序确定,如下所示(有关托管/外部和本地/nonlocal 术语的更多信息,请参见StorageHandlers部分)。

Native Non-Native
Managed hive.default.fileformat.managed(或回退到 hive.default.fileformat) 默认文件格式未涵盖
External hive.default.fileformat 默认文件格式未涵盖
hive.fileformat.check
  • 默认值:true

  • 添加于:Hive0.5.0

加载数据文件时是否检查文件格式。

hive.query.result.fileformat
  • Default Value:

  • 配置单元 0.x,1.x 和 2.0:TextFile

    • Hive 2.1 及更高版本:SequenceFile
  • 添加于:Hive 0.7.0 和HIVE-1598

用于查询中间结果的文件格式。选项是 TextFile,SequenceFile 和 RCfile。从 Hive 2.1.0(HIVE-1608)开始,默认值更改为 SequenceFile。

RCFile Format

hive.io.rcfile.record.interval
  • 默认值:2147483647

  • 添加于:Hive 0.4.0 和HIVE-352;在 Hive 0.14.0 中使用HIVE-7211添加到 HiveConf.java

hive.io.rcfile.column.number.conf
  • 默认值:0

  • 添加于:Hive 0.4.0 和HIVE-352;在 Hive 0.14.0 中使用HIVE-7211添加到 HiveConf.java

hive.io.rcfile.tolerate.corruptions
  • 默认值:false

  • 添加于:Hive 0.4.0 和HIVE-352;在 Hive 0.14.0 中使用HIVE-7211添加到 HiveConf.java

hive.io.rcfile.record.buffer.size
  • 默认值:4194304

  • 添加于:Hive 0.4.0 和HIVE-352;在 Hive 0.14.0 中使用HIVE-7211添加到 HiveConf.java

ORC 文件格式

ORC 文件格式是在Hive 0.11.0中引入的。有关详情,请参见ORC Files

除了本节中列出的配置属性外,其他部分中的某些属性也与 ORC 有关:

hive.exec.orc.memory.pool
  • 默认值:0.5

  • 添加于:Hive 0.11.0 和HIVE-4248

ORC 文件编写器可以使用的最大堆分数。

hive.exec.orc.write.format
  • 默认值:(空)

  • 添加于:Hive 0.12.0 中带有HIVE-4123;默认值由HIVE-5091从 0.11 更改为 null(也在 Hive 0.12.0 中)

定义要写入的文件的版本。可能的值为 0.11 和 0.12. 如果未定义此参数,则 ORC 将使用 Hive 0.12 中引入的游程编码(RLE)。除 0.11 以外的任何值都将导致 0.12 编码。

将来可能会引入其他值(请参阅HIVE-6002)。

hive.exec.orc.base.delta.ratio
  • 默认值:8

  • 添加于:Hive 1.3.0 和 2.1.0,带有HIVE-13563

根据 STRIPE_SIZE 和 BUFFER_SIZE 定义基本写入器和增量写入器的比率。

hive.exec.orc.default.stripe.size
  • 预设值:0.13.0 中的256*1024*1024(268,435,456);
    64*1024*1024(67,108,864)in 0.14.0

  • 添加于:Hive 0.13.0 中带有HIVE-5425;默认值在 0.14.0 中使用HIVE-7231HIVE-7490进行了更改

定义默认的 ORC 条带大小(以字节为单位)。

hive.exec.orc.default.block.size
  • 默认值:256*1024*1024(268,435,456)

  • 新增于:Hive 0.14.0 with HIVE-7231

定义 ORC 文件的默认文件系统块大小。

hive.exec.orc.dictionary.key.size.threshold
  • 默认值:0.8

  • 添加于:Hive 0.12.0 with HIVE-4324

如果字典中的键数大于非空行总数的此分数,请关闭字典编码。使用 1 始终使用字典编码。

hive.exec.orc.default.row.index.stride
  • 默认值:10000

  • 新增于:Hive 0.13.0 with HIVE-5728

定义默认的 ORC 索引步长(以行数为单位)。 (* Stride *是索引条目代表的行数.)

hive.exec.orc.default.buffer.size
  • 默认值:256*1024(262,144)

  • 新增于:Hive 0.13.0 with HIVE-5728

定义默认的 ORC 缓冲区大小(以字节为单位)。

hive.exec.orc.default.block.padding
  • 默认值:true

  • 新增于:Hive 0.13.0 with HIVE-5728

定义默认的块填充。 Hive 0.12.0 中添加了块填充(HIVE-5091,“ ORC 文件应具有将条带填充到 HDFS 块边界的选项”)。

hive.exec.orc.block.padding.tolerance
  • 默认值:0.05

  • 新增于:Hive 0.14.0 with HIVE-7231

将块填充的公差定义为条带大小的小数部分(例如,默认值 0.05 是条带大小的 5%)。对于默认的 64Mb ORC 条带和 256Mb HDFS 块,将在默认 hive.exec.orc.block.padding.tolerance 的情况下为 256Mb 块中的填充最多保留 3.2Mb。在这种情况下,如果块中的可用大小大于 3.2Mb,将插入一个新的较小条带以适合该空间。这将确保没有写入的条带跨越块边界并导致节点本地任务内的远程读取。

hive.exec.orc.default.compress
  • 默认值:ZLIB

  • 新增于:Hive 0.13.0 with HIVE-5728

定义 ORC 文件的默认压缩编解码器。

hive.exec.orc.encoding.strategy
  • 默认值:SPEED

  • 新增于:Hive 0.14.0 with HIVE-7219

定义写入数据时要使用的编码策略。更改此设置只会影响整数的轻量级编码。该标志不会更改更高级别压缩编解码器(如 ZLIB)的压缩级别。可能的选项是“速度”和“压缩”。

hive.orc.splits.include.file.footer

如果启用,由ORC生成的拆分将在文件中包含有关条纹的元数据。可以从 Client 端或 HiveServer2 计算机上远程读取此数据,并将其发送到所有任务。

hive.orc.cache.stripe.details.size

用于保留有关 Client 端中缓存的ORC拆分的元信息的缓存大小。

hive.orc.cache.use.soft.references
  • 默认值:false

  • 添加于:Hive 1.3.0,Hive 2.1.1,带有HIVE-13985的 Hive 2.2.0

默认情况下,ORCImporting 格式用于存储 ORC 文件页脚的缓存将硬引用用于缓存的对象。将其设置为 true 可以帮助避免在内存压力下(在某些情况下)内存不足的问题,但总的查询性能会有些不确定。

hive.io.sarg.cache.max.weight.mb
  • 默认值:10

  • 添加于:Hive 2.2.1,Hive 2.3.1,Hive 2.4.0,Hive 3.0.0 和HIVE-17669

SearchArgument 缓存允许的最大权重,以兆字节为单位。默认情况下,缓存允许的最大权重为 10MB,之后将逐出条目。设置为 0,将完全禁用 SearchArgument 缓存。

hive.orc.compute.splits.num.threads

ORC应该使用多少个线程来并行创建拆分。

hive.exec.orc.split.strategy
  • 默认值:HYBRID

  • 新增于:Hive 1.2.0 with HIVE-10114

ORC应该使用什么策略来创建要执行的拆分。可用选项为“ BI”,“ ETL”和“ HYBRID”。

如果文件数少于预期的 Map 器数,则 HYBRID 模式将读取所有文件的页脚;如果平均文件大小小于默认的 HDFS 块大小,则切换为每个文件生成 1 个拆分。 ETL 策略始终在生成拆分之前先读取 ORC 页脚,而 BI 策略无需从 HDFS 读取任何数据即可快速生成每个文件的拆分。

hive.exec.orc.skip.corrupt.data
  • 默认值:false

  • 新增于:Hive 0.13.0 with HIVE-6382

如果 ORC 读取器遇到损坏的数据,则此值将用于确定是跳过损坏的数据还是引发异常。默认行为是引发异常。

hive.exec.orc.zerocopy

将零拷贝读取与 ORC 一起使用。 (这需要 Hadoop 2.3 或更高版本.)

hive.merge.orcfile.stripe.level
  • 默认值:true

  • 新增于:Hive 0.14.0 with HIVE-7509

当在编写具有 ORC 文件格式的表时启用 Configuration Properties#hive.merge.mapfilesConfiguration Properties#hive.merge.mapredfilesConfiguration Properties#hive.merge.tezfiles 时,启用此配置属性将对小型 ORC 文件执行条带级快速合并。请注意,启用此配置属性将不支持填充公差配置( Configuration Properties#hive.exec.orc.block.padding.tolerance )。

hive.orc.row.index.stride.dictionary.check
  • 默认值:true

  • 新增于:Hive 0.14.0 with HIVE-7832

如果启用了字典检查,则将在第一行索引 Span(默认为 10000 行)之后进行,否则,字典检查将在写入第一条带之前进行。在这两种情况下,是否保留字典的决定都将保留。

hive.exec.orc.compression.strategy
  • 默认值:SPEED

  • 新增于:Hive 0.14.0 with HIVE-7859

定义写入数据时要使用的压缩策略。这会更改更高级别压缩编解码器(如 ZLIB)的压缩级别。

值可以是SPEEDCOMPRESSION

Parquet

Hive 0.10、0.11 和 0.12 中的插件支持 Parquet,而 Hive 0.13 和更高版本中本机支持。有关详情,请参见Parquet

hive.parquet.timestamp.skip.conversion
  • 默认值:true

  • 新增于:Hive 1.2.0 with HIVE-9482

在 3.1.2 之前的 Hive 实现中,Parquet 的时间戳存储在 UTC 上,该标志允许跳过读取其他工具创建的 Parquet 文件时的转换。

Avro

有关详情,请参见AvroSerDe

hive.avro.timestamp.skip.conversion
  • 默认值:false

  • 新增于:Hive 3.1.2 with HIVE-21291

一些较早的 Hive 实现(3.1.2 之前的版本)以 UTC 标准化的方式编写了 Avro 时间戳,而从版本 3.1.0 到 3.1.2 为止,Hive 编写了与时区无关的时间戳。
将此标志设置为 true 会将旧时间戳记视为时区不可知的。将其设置为 false 会将旧时间戳记视为 UTC 规范化。
此标志不会影响从 Hive 3.1.2 开始编写的时间戳,这些时间戳实际上是时区不可知的(有关详细信息,请参见HIVE-21002)。
注意:此属性将影响对使用 Kafka 表中的 AvroSerDe 和时间戳(在有效负载/ Avro 文件中,与 Kafka 时间戳无关)的 HBase 文件进行反序列化的方式–请记住,使用 AvroSerDe 序列化的时间戳将在过程中进行 UTC 标准化序列化。因此,如果使用 HBase 或 Kafka,则将此属性保留为 false。

Vectorization

Hive 在版本 0.13.0(HIVE-4160HIVE-5283)中添加了矢量化查询执行。有关更多信息,请参见设计文档向量化查询执行

hive.vectorized.execution.enabled
  • 默认值:false

  • 新增于:Hive 0.13.0 with HIVE-5283

此标志应设置为 true 以启用查询执行的矢量化模式。默认值为 false。

hive.vectorized.execution.reduce.enabled
  • 默认值:true

  • 新增于:Hive 0.14.0 with HIVE-7405

此标志应设置为 true 以启用查询执行的减少端的矢量化模式。默认值是 true。

hive.vectorized.execution.reduce.groupby.enabled
  • 默认值:true

  • 新增于:Hive 0.14.0 with HIVE-8052

该标志应设置为 true 以启用化简方式 GROUP BY 查询执行的矢量化模式。默认值是 true。

hive.vectorized.execution.reducesink.new.enabled
  • 默认值:true

  • 新增于:Hive 2.0.0 with HIVE-12290

该标志应设置为 true,以启用使用 ReduceSink 进行的新的查询矢量化。

hive.vectorized.execution.mapjoin.native.enabled
  • 默认值:true

  • 新增于:Hive 1.2.0 with HIVE-9824

此标志应设置为 true,以启用使用 MapJoin 进行的本地(即非直通)查询矢量化。

hive.vectorized.execution.mapjoin.native.multikey.only.enabled
  • 默认值:false

  • 新增于:Hive 1.2.0 with HIVE-9824

此标志应设置为 true,以限制在使用 MapJoin 的查询中将本机向量 Map 联接哈希表限制用于 MultiKey。

hive.vectorized.execution.mapjoin.minmax.enabled
  • 默认值:false

  • 新增于:Hive 1.2.0 with HIVE-9824

此标志应设置为 true,以使矢量 Map 联接哈希表能够使用 MapJoin 对整数联接查询使用 max/max 过滤。

hive.vectorized.execution.mapjoin.overflow.repeated.threshold
  • 默认值:-1

  • 新增于:Hive 1.2.0 with HIVE-9824

向量 Map 联接哈希表中匹配项的小表行数,其中我们使用溢出向量化行批处理中的重复字段优化对使用 MapJoin 的联接查询。值-1表示确实使用联接结果优化。否则,阈值可以是 0 到最大整数。

hive.vectorized.execution.mapjoin.native.fast.hashtable.enabled
  • 默认值:false

  • 新增于:Hive 1.2.0 with HIVE-9824

此标志应设置为 true,以允许在使用 MapJoin 的查询中使用本机快速矢量 Map 联接哈希表。

hive.vectorized.groupby.checkinterval
  • 默认值:100000

  • 新增于:Hive 0.13.0 with HIVE-5692

在对平均条目大小进行重新计算之前,添加到 GROUP BY 聚合哈希中的条目数。

hive.vectorized.groupby.maxentries
  • 默认值:1000000

  • 新增于:Hive 0.13.0 with HIVE-5692

向量 GROUP BY 聚合哈希表中的最大条目数。超过此阈值将触发冲洗,无论内存压力条件如何。

hive.vectorized.use.vectorized.input.format
  • 默认值:true

  • 添加于:Hive 2.1.0 和HIVE-12878

此标志应设置为 true,以允许 Hive 利用支持矢量化的 Importing 格式。默认值是 true。

hive.vectorized.use.vector.serde.deserialize
  • 默认值:false

  • 添加于:Hive 2.1.0 和HIVE-12878

此标志应设置为 true 以启用使用矢量反序列化矢量化行。默认值为 false。

hive.vectorized.use.row.serde.deserialize
  • 默认值:false

  • 添加于:Hive 2.1.0 和HIVE-12878

此标志应设置为 true 以启用使用行反序列化进行矢量化。默认值为 false。

hive.vectorized.input.format.excludes
  • 默认值:(空)

  • 在带有HIVE-17534的 Hive 2.4.0 中添加

此标志应用于提供以逗号分隔的完全合格的类名列表,以使用向量化文件 inputformat 从向量化执行中排除某些 FileInputFormat。请注意,根据是否启用了 Configuration Properties#hive.vectorized.use.vector.serde.deserializeConfiguration Properties#hive.vectorized.use.row.serde.deserialize ,对于该 Importing 格式仍可能发生矢量化执行。

MetaStore

除了本节中列出的 Hive Metastore 属性外,其他部分中还列出了一些属性:

hive.metastore.local
  • 默认值:true

  • 添加于:Hive 0.8.1

  • 删除于:Hive 0.10 with HIVE-2585

控制是连接到远程元存储服务器还是在 Hive Client JVM 中打开新的元存储服务器。从 Hive 0.10 开始,此功能不再使用。相反,如果设置了 hive.metastore.uris ,则假定remote模式,否则为local

hive.metastore.uri.selection
  • 默认值:RANDOM

  • 添加于:Hive 3.0.0

确定 MetastoreClient 端用于连接到远程 Metastore 的选择机制。 SEQUENTIAL 表示将从指定为 hive.metastore.uris 的 URI 中选择第一个有效的元存储区。 RANDOM 表示将随机选择元存储。

javax.jdo.option.ConnectionURL
  • 默认值:jdbc:derby:;databaseName=metastore_db;create=true

  • 添加于:Hive0.6.0

JDBC metastore 的 JDBC 连接字符串。

javax.jdo.option.ConnectionDriverName
  • 默认值:org.apache.derby.jdbc.EmbeddedDriver

  • 添加于:Hive 0.8.1

JDBC 元存储库的驱动程序类名称。

javax.jdo.PersistenceManagerFactoryClass
  • 默认值:org.datanucleus.jdo.JDOPersistenceManagerFactory

  • 添加于:Hive 0.8.1

实现 JDO PersistenceManagerFactory 的类。

javax.jdo.option.DetachAllOnCommit
  • 默认值:true

  • 添加于:Hive 0.8.1

从会话中分离所有对象,以便在提交事务后可以使用它们。

javax.jdo.option.NonTransactionalRead
  • 默认值:true

  • 添加于:Hive 0.8.1

在事务之外读取。

javax.jdo.option.ConnectionUserName
  • 默认值:APP

  • 添加于:Hive 0.8.1

用于 Metastore 数据库的用户名。

javax.jdo.option.ConnectionPassword
  • 默认值:mine

  • 添加于:Hive 0.3.0

用于 Metastore 数据库的密码。

有关其他配置,请参见从 Hive 配置中删除 Hive Metastore 密码

javax.jdo.option.Multithreaded
  • 默认值:true

  • 添加于:Hive 0.8.0

如果多个线程同时通过 JDO 访问 metastore,请将其设置为 true。

datanucleus.connectionPoolingType
  • 默认值:Hive 0.7 至 0.11 中的 DBCP; BoneCP 在 0.12 到 2.3 之间; 3.0 及更高版本中的 HikariCP

  • 添加于:Hive 0.7.0

从 3.0 发行版(HIVE-16383)开始,将 HikariCP 连接池用于 JDBC metastore。

在版本 0.12 至 2.3(HIVE-4807)中将 BoneCP 连接池用于 JDBC 元存储,在版本 0.7 至 0.11 中将 DBCP 连接池使用。

从 Hive 2.2.0(HIVE-13159)开始,此参数也可以设置为none

datanucleus.connectionPool.maxPoolSize
  • 默认值:10

  • 添加于:Hive 3.0.0

指定连接池中的最大连接数。

注意:配置的大小将由 2 个连接池(TxnHandler 和 ObjectStore)使用。

配置最大连接池大小时,建议考虑元存储实例的数量和 HiveServer2 实例的数量

配置了嵌入式 metastore。为了获得最佳性能,请将配置设置为满足以下条件

(2 * pool_size * metastore_instances 2 * pool_size * HS2_instances_with_embedded_metastore)=(2 * physical_core_count hard_disk_count)。

datanucleus.validateTables

根据代码验证现有架构。如果要验证现有架构,请启用此功能。

datanucleus.schema.validateTables

根据代码验证现有架构。如果要验证现有架构,请启用此功能。

datanucleus.validateColumns

根据代码验证现有架构。如果要验证现有架构,请启用此功能。

datanucleus.schema.validateColumns

根据代码验证现有架构。如果要验证现有架构,请启用此功能。

datanucleus.validateConstraints

根据代码验证现有架构。如果要验证现有架构,请启用此功能。

datanucleus.schema.validateConstraints

根据代码验证现有架构。如果要验证现有架构,请启用此功能。

datanucleus.storeManagerType
  • 默认值:rdbms

  • 添加于:Hive 0.7.0

元数据存储类型。

datanucleus.fixedDatastore
  • Default Value:

  • 配置单元 0.x:false

    • Hive1.x:false
  • 添加于:Hive 0.12.0 with HIVE-3764

  • 删除于:Hive 2.0.0 with HIVE-6113

指示是否允许更新架构。

datanucleus.autoCreateSchema

如果启动中不存在,则在启动时创建必要的架构。创建一次后,将其设置为 false。

在 Hive 0.12.0 和更高版本中,如果 Configuration Properties#hive.metastore.schema.verificationtrue,则 datanucleus.autoCreateSchema 被禁用。

datanucleus.schema.autoCreateAll

如果启动中不存在,则在启动时创建必要的架构。创建一次后,将其重置为 false。

如果 Configuration Properties#hive.metastore.schema.verificationtrue,则禁用 datanucleus.schema.autoCreateAll **。

datanucleus.autoStartMechanismMode
  • 默认值:checked

  • 添加于:Hive 0.7.0

如果元数据表不正确,则引发异常。

datanucleus.transactionIsolation
  • 默认值:read-committed

  • 添加于:Hive 0.7.0

用于标识生成的默认事务隔离级别。

datanucleus.cache.level2
  • 默认值:false

  • 添加于:Hive 0.7.0

此参数不执行任何操作。
*警告说明:*对于大多数安装,Hive 不应启用 DataNucleus L2 缓存,因为这可能导致正确性问题。因此,有些人在假定禁用缓存的情况下将此参数设置为 false-不幸的是,它没有禁用缓存。要实际禁用缓存,请将 Configuration Properties#datanucleus.cache.level2.type 设置为“ none”。

datanucleus.cache.level2.type
  • 默认值:Hive 0.9 及更高版本中的none;HiveSOFT在 0.7 到 0.8.1

  • 添加于:Hive 0.7.0

NONE =禁用数据核 2 级缓存,SOFT =基于软引用的缓存,WEAK =基于弱引用的缓存。
*警告说明:*对于大多数 Hive 安装,启用数据核缓存可能导致正确性问题,并且很危险。应将其保留为“无”。

datanucleus.identifierFactory
  • 默认值:datanucleus

  • 添加于:Hive 0.7.0

生成表/列名称等时要使用的标识符工厂的名称。“ datanucleus”用于向后兼容。

datanucleus.plugin.pluginRegistryBundleCheck
  • 默认值:LOG

  • 添加于:Hive 0.7.0

定义当发现并重复插件束时发生的情况:EXCEPTION,LOG 或 NONE。

hive.metastore.warehouse.dir
  • 默认值:/user/hive/warehouse

  • 添加于:Hive 0.2.0

仓库的默认数据库的位置。

hive.warehouse.subdir.inherit.perms
  • 默认值:false

  • 添加到:Hive 0.9.0 和HIVE-2504

  • 删除于:Hive 3.0.0 with HIVE-16392

如果表目录应该继承仓库或数据库目录的权限而不是使用从 dfs umask 派生的权限创建,则将其设置为 true。 (此配置属性在发布 Hive 0.9.0 之前替换了 Configuration Properties#hive.files.umask.value )(此配置属性在 3.0.0 版中已删除,更多详细信息在Hive 中的权限继承中)

该标志的行为在HIVE-6892和 sub-JIRA 的 Hive-0.14.0 中进行了更改。 Hive 中的权限继承中有更多详细信息。

hive.metastore.execute.setugi
  • 默认值:从 Hive 0.8.1 到 0.13.0 的false,从 Hive 0.14.0 开始的true

  • 新增于:Hive 0.8.1 和HIVE-2616,默认设置在 Hive 0.14.0 和HIVE-6903

在不安全模式下,如果为 true,则将导致 metastore 使用 Client 端报告的用户和组权限执行 DFS 操作。请注意,必须在 Client 端和服务器端都设置此属性。还要注意,这是最大的努力。如果 Client 端将其设置为 true,而服务器将其设置为 false,则 Client 端设置将被忽略。

hive.metastore.event.listeners
  • 默认值:(空)

  • 添加于:Hive 0.8.0 和HIVE-2038

Metastore 事件的逗号分隔侦听器列表。

hive.metastore.partition.inherit.table.properties
  • 默认值:(空)

  • 添加于:Hive 0.8.1

表属性中出现的逗号分隔键的列表,这些键将继承到新创建的分区。 *表示所有键都将被继承。

hive.metastore.end.function.listeners
  • 默认值:(空)

  • 添加于:Hive 0.8.1

Metastore 函数结尾的逗号分隔的侦听器列表。

hive.metastore.event.expiry.duration
  • 默认值:0

  • 添加于:Hive 0.8.0

事件在事件表中过期之前的持续时间(以秒为单位)。

hive.metastore.event.clean.freq
  • 默认值:0

  • 添加于:Hive 0.8.0

计时器任务运行以清除 metastore 中过期事件的频率(以秒为单位)。

hive.metastore.connect.retries
  • 默认值:3

  • 添加于:Hive0.6.0

打开与 Metastore 的连接时的重试次数。

hive.metastore.client.connect.retry.delay
  • 默认值:1

  • 添加于:Hive 0.7.0

Client 端在连续的连接尝试之间 await 的秒数。

hive.metastore.client.socket.timeout
  • 预设值:Hive 0.7 至 0.13.1 中的20; Hive 0.14.0 及更高版本中的600

  • 添加于:Hive 0.7.0;默认值在 Hive 0.14.0 中使用HIVE-7140更改

MetaStoreClient 端套接字超时(以秒为单位)。

hive.metastore.rawstore.impl
  • 默认值:org.apache.hadoop.hive.metastore.ObjectStore

  • 添加于:Hive 0.8.1

实现 org.apache.hadoop.hive.metastore.rawstore 接口的类的名称。此类用于存储和检索原始元数据对象,例如表,数据库。

从 Hive 3.0 开始,有两种实现。默认实现(ObjectStore)直接查询数据库。 HIVE-16520引入了新的CachedStore(全类名是org.apache.hadoop.hive.metastore.cache.CachedStore),该缓存将检索到的对象缓存在 Metastore 的内存中。

metastore.cached.rawstore.impl
  • 默认值:org.apache.hadoop.hive.metastore.ObjectStore

  • 在以下组件中添加:Hive 3.0

如果您使用的是 CachedStore,则这是要使用的包装的 RawStore 类的名称。

metastore.cached.rawstore.cache.update.frequency
  • 默认值:60

  • 在 Hive 3.0.0 中添加

从 metastore DB 更新 metastore 缓存之后的时间(以秒为单位)。

metastore.cached.rawstore.cached.object.whitelist
  • 默认值: .*

  • 在 Hive 3.0.0 中添加

用逗号分隔的正则表达式列表,以选择将由 CachedStore 缓存的表(及其分区,统计信息等)。可以与hive.metastore.cached.rawstore.cached.object.blacklist结合使用。

示例:.*, db1.*, db2\.tbl.*.最后一项可能会覆盖之前指定的模式。

metastore.cached.rawstore.cached.object.blacklist
  • 默认值:(空)

  • 在 Hive 3.0.0 中添加

用逗号分隔的正则表达式列表,以过滤掉将由 CachedStore 缓存的表(及其分区,统计信息等)。可以与hive.metastore.cached.rawstore.cached.object.whitelist结合使用。

示例:db2.*, db3\.tbl1, db3\..*.最后一项可能会覆盖之前指定的模式。

metastore.cached.rawstore.max.cache.memory
  • 默认值:1gb

  • 在 Hive 3.0.0 中添加

高速缓存的对象可以使用的最大内存(以字节为单位)。使用的内存是根据缓存中表和分区的估计大小来计算的。将其设置为负值将禁用内存估计。

hive.metastore.batch.retrieve.max
  • 默认值:300

  • 添加于:Hive 0.8.0

可以从 metastore 一批中检索最大数量的对象(表/分区)。数量越大,Hive Metastore 服务器所需的往返次数就越少,但是这也可能导致 Client 端的内存需求更高。

hive.metastore.ds.connection.url.hook
  • 默认值:(空)

  • 添加于:Hive0.6.0

用于检索 JDO 连接 URL 的钩子的名称。如果为空,则使用 javax.jdo.option.ConnectionURL 中的值。

hive.metastore.ds.retry.attempts
  • 默认值:1

  • 添加于:Hive0.6.0

如果存在连接错误,重试 Metastore 调用的次数。

hive.metastore.ds.retry.interval
  • 默认值:1000

  • 添加于:Hive0.6.0

Metastore 重试尝试之间的毫秒数。

hive.metastore.server.min.threads
  • 默认值:200

  • 添加于:Hive 0.6.0 和HIVE-1270

Thrift 服务器池中的最小工作线程数。

hive.metastore.server.max.threads
  • Default Value:

  • 配置单元 0.x 和 1.0.x:100000

    • Hive 1.1.0 及更高版本:1000(HIVE-8666)
  • 添加于:Hive 0.6.0 和HIVE-1270

Thrift 服务器池中的最大工作线程数。

hive.metastore.server.max.message.size
  • 默认值:100*1024*1024

  • 内建于:带有HIVE-8680的 Hive 1.1.0(已移植到 Hive 1.0.2)

Hive Metastore 接受的最大消息大小(以字节为单位)。

hive.metastore.server.tcp.keepalive
  • 默认值:true

  • 添加于:Hive0.6.0

是否为元存储服务器启用 TCP keepalive。 Keepalive 将阻止半开连接的累积。

hive.metastore.sasl.enabled
  • 默认值:false

  • 添加于:Hive 0.7.0

如果为 true,则将使用 SASL 保护 metastore 旧版接口。Client 端必须使用 Kerberos 进行身份验证。

hive.metastore.kerberos.keytab.file
  • 默认值:(空)

  • 添加于:Hive 0.7.0

Kerberos Keytab 文件的路径,该文件包含 Metastore 旧服务器的服务主体。

hive.metastore.kerberos.principal
  • 默认值:hive-metastore/_HOST@EXAMPLE.COM

  • 添加于:Hive 0.7.0

Metastore 旧服务器的服务主体。特殊字符串_HOST 将自动替换为正确的主机名。

注意:此主体由 metastore 进程用于与其他服务进行身份验证(例如,用于 HDFS 操作)。

hive.metastore.client.kerberos.principal
  • 默认值:(空)

  • 添加于:Hive 2.2.1、2.4.0(HIVE-17489)

Hive 元存储库的面向 Client 端的 Kerberos 服务主体。如果未设置,则默认为hive.metastore.kerberos.principal设置的值,以实现向后兼容。

另请参见hive.server2.authentication.client.kerberos.principal

hive.metastore.cache.pinobjtypes
  • 默认值:Table,StorageDescriptor,SerDeInfo,Partition,Database,Type,FieldSchema,Order

  • 添加于:Hive 0.7.0

逗号分隔的元存储对象类型列表,应将其固定在缓存中。

hive.metastore.authorization.storage.checks
  • 默认值:false

  • 添加于:Hive 0.8.0

Metastore 是否应针对基础存储进行授权检查,以进行诸如 drop-partition(如果相关用户无权删除存储上的相应目录的权限,则禁止进行 drop-partition)操作。

hive.metastore.thrift.framed.transport.enabled
  • 默认值:false

  • 添加于:Hive 0.10.0 和HIVE-2767

如果为 true,则 metastore Thrift 接口将使用 TFramedTransport。如果为 false(默认),则使用标准的 TTransport。

hive.metastore.schema.verification
  • 默认值:false

  • 添加于:Hive 0.12.0 with HIVE-3764

强制执行 Metastore 模式版本一致性。
True:验证存储在 metastore 中的版本信息是否与 Hive jar 中的版本信息匹配。还禁用自动模式迁移尝试(请参阅 Configuration Properties#datanucleus.autoCreateSchemaConfiguration Properties#datanucleus.schema.autoCreateAll )。 Hive 升级后,要求用户手动迁移架构,以确保正确的 Metastore 架构迁移。
False:如果存储在 metastore 中的版本信息与 Hive jar 中的版本信息不匹配,则发出警告。

有关更多信息,请参见Metastore 模式一致性和升级

hive.metastore.disallow.incompatible.col.type.changes
  • Default Value:

  • 配置单元 0.x 和 1.x:false

  • 添加于:Hive 0.12.0 with HIVE-4409

如果为 true,则不允许将列类型(例如 STRING)更改为不兼容类型(例如 MAP<STRING, STRING>)的 ALTER TABLE 操作。 RCFile 默认的 SerDe(ColumnarSerDe)对值进行序列化,以便可以将数据类型从字符串转换为任何类型。该 Map 还被序列化为字符串,也可以作为字符串读取。但是,对于任何二进制序列化,情况并非如此。随后尝试访问旧分区时,阻塞 ALTER TABLE 可以防止 ClassCastExceptions。

原始类型(例如 INT,STRING,BIGINT 等)彼此兼容,不会被阻塞。

有关更多详细信息,请参见HIVE-4409

hive.metastore.integral.jdo.pushdown
  • 默认值:false

  • 新增于:Hive 0.13.0 with HIVE-6052

允许对 Metastore 中的整体分区列进行 JDO 查询下推。默认关闭。这样可以提高整数列的元存储性能,尤其是在存在大量分区的情况下。但是,它不适用于未标准化的整数值(例如,如果它们的前导零如 0012)。如果启用了元存储区直接 SQL 并可以运行( Configuration Properties#hive.metastore.try.direct.sql ),则此优化也无关紧要。

hive.metastore.try.direct.sql
  • 默认值:true

  • 添加于:Hive 0.12.0 with HIVE-4051

Hive Metastore 是否应为某些读取路径尝试使用直接 SQL 查询而不是 DataNucleus。当按数量级获取许多分区或列统计信息时,这可以提高 metastore 的性能。但是,不能保证可以在所有 RDBMS-es 和所有版本上使用。如果 SQL 失败,则元存储将退回到 DataNucleus,因此即使 SQL 不适用于您的数据存储上的所有查询,它也是安全的。如果所有 SQL 查询都失败(例如,您的元存储由 MongoDB 支持),则可能要禁用此功能以节省尝试后退成本。

可以使用从 Hive 0.14.0(HIVE-7532)开始的“ set metaconf:hive.metastore.try.direct.sql =<value>”命令在每个 Client 端上进行配置。

hive.metastore.try.direct.sql.ddl
  • 默认值:true

  • 新增于:Hive 0.13.0 with HIVE-5626

Configuration Properties#hive.metastore.try.direct.sql 相同,用于修改元存储数据的事务中的读取语句。由于 Postgres 中的非标准行为,如果直接 SQL 选择查询的语法不正确或事务内部类似,则整个事务将失败并且无法回退到 DataNucleus。如果您遇到这种情况,则应禁用在transactions内部使用直接 SQL。

可以使用从 Hive 0.14.0(HIVE-7532)开始的“ set metaconf:hive.metastore.try.direct.sql.ddl =<value>”命令在每个 Client 端上进行配置。

hive.metastore.orm.retrieveMapNullsAsEmptyStrings
  • 默认值:false

  • 添加于:Hive 1.0.0 和HIVE-8485

Thrift 不支持 Map 中的空值,因此从对象关系 Map(ORM)检索的 Map 中存在的任何空值都必须修剪或转换为空字符串。一些支持数据库(例如 Oracle)将空字符串保留为 null,因此需要将此参数设置为true才能撤销该行为。对于其他用户,默认修剪行为是正确的。

hive.direct.sql.max.query.length
  • 默认值:100

  • 新增内容:带有HIVE-12349的 Hive 1.3.0 和 2.1.0(但不是 2.0.x)

直接 SQL 生成的查询字符串的最大大小(以 KB 为单位)。

hive.direct.sql.max.elements.in.clause
  • 默认值:1000

  • 新增内容:带有HIVE-12349的 Hive 1.3.0 和 2.1.0(但不是 2.0.x)

直接 SQL 生成的 IN 子句中的最大值数。一旦超过,它将被分成多个 OR 分隔的 IN 子句。

hive.direct.sql.max.elements.values.clause
  • 默认值:1000

  • 新增内容:带有HIVE-12349的 Hive 1.3.0 和 2.1.0(但不是 2.0.x)

直接 SQL 生成的 INSERT 语句的 VALUES 子句中的最大值数。

hive.metastore.port
  • 默认值:9083

  • 内建于:Hive 1.3.0 with HIVE-9365

Hive Metastore 侦听器端口。

hive.metastore.initial.metadata.count.enabled
  • 默认值:true

  • 添加于:Hive 2.1.0 和HIVE-12628

在 Metastore 启动时为 Metrics 启用元数据计数。

hive.metastore.limit.partition.request
  • 默认值:-1

  • 内建于:Hive 2.2.0 with HIVE-13884

这限制了可以从 Metastore 中为给定表请求的分区数。如果查询试图为每个表获取的分区数超过配置的限制,则不会执行查询。值“ -1”表示无限制。此参数优先于 Configuration Properties#hive.limit.query.max.table.partition (已弃用;在 3.0.0 中已删除)。

hive.metastore.fastpath
  • 默认值:false

  • 新增于:Hive 2.0.0 with HIVE-9453

用于避免元存储中的所有代理和对象副本。请注意,如果设置了此选项,则必须使用本地元存储(hive.metastore.uris必须为空),否则未定义,并且很可能导致不良行为。

hive.metastore.jdbc.max.batch.size
  • 默认值:1000

  • 添加于:Hive 4.0.0 和HIVE-23093

这控制单个 JDBC 批处理语句中最大更新/删除/插入查询数。

Hive Metastore 连接池配置

Hive Metastore 支持多种连接池实现(例如 hikaricp,bonecp,dbcp)。以“ hikari”或“ dbcp”为前缀的配置属性将被 Hive 传播到 Connectionpool 实现中。 Jdbc 连接 URL,用户名,密码和连接池的最大连接数是 exception,必须使用其特殊的 Hive Metastore 配置属性进行配置。

在 Hive 3.0.0 中添加了HIVE-17318HIVE-17319

Hive Metastore HBase

从 2.0.0 版(HIVE-9452)开始为 Hive 开发HBase metastore,但是工作已停止,并且从 3.0.0 版(HIVE-17234)中的 Hive 中删除了代码。

在版本 2.x.x 中为 HBase 元存储创建了更多配置属性-此处未介绍。有关完整列表,请参见关于 HIVE-17234 的文档 Comments

hive.metastore.hbase.cache.size

(此配置属性永远不应该在这里记录,因为该属性在HIVE-9693最初发布之前已被删除。)

hive.metastore.hbase.cache.ttl
  • 默认值:600s

  • 新增于:Hive 2.0.0 with HIVE-9453

  • 删除于:Hive 3.0.0 with HIVE-17234

统计信息项驻留在缓存中的秒数。

hive.metastore.hbase.file.metadata.threads
  • 默认值:1

  • 添加于:Hive 2.1.0 和HIVE-12075

用于在后台读取文件元数据以对其进行缓存的线程数。

HiveServer2

HiveServer2 是在 Hive 0.11.0 中使用HIVE-2935添加的。有关更多信息,请参见HiveServer2 Overview设置 HiveServer2HiveServer2 Clients

除了本节中列出的配置属性外,其他部分中还列出了一些 HiveServer2 属性:

hive.server2.thrift.port
  • 默认值:10000

  • 添加于:Hive 0.11.0 和HIVE-2935

HiveServer2 Thrift 接口的端口号。可以通过设置$ HIVE_SERVER2_THRIFT_PORT 来覆盖。

hive.server2.thrift.bind.host
  • 默认值:localhost

  • 添加于:Hive 0.11.0 和HIVE-2935

绑定要在其上运行 HiveServer2 Thrift 接口的主机。可以通过设置$ HIVE_SERVER2_THRIFT_BIND_HOST 来覆盖。

hive.server2.thrift.min.worker.threads
  • 默认值:5

  • 添加于:Hive 0.11.0 和HIVE-2935

Thrift 工作线程的最小数量。

hive.server2.thrift.max.worker.threads
  • 默认值:在 Hive 0.11.0 中为100,在 Hive 0.12.0 及更高版本中为500

  • 添加于:Hive 0.11.0 中带有HIVE-2935,默认值在 HIVE 0.12.0 中具有HIVE-4617更改

Thrift 工作线程的最大数量。

hive.server2.thrift.worker.keepalive.time
  • 默认值:60

  • 在 Hive0.14.0 和HIVE-7353中添加

空闲的工作线程的保持活动时间(以秒为单位)。当 Worker 数>最小 Worker 数时,多余的线程将在此时间间隔后被杀死。

hive.server2.thrift.max.message.size
  • 默认值:100*1024*1024

  • 在带有HIVE-8680的 Hive 1.1.0(反向移植到 Hive 1.0.2)中添加

HiveServer2 服务器将接受的最大消息大小(以字节为单位)。

hive.server2.authentication
  • 默认值:NONE

  • 添加于:Hive 0.11.0 和HIVE-2935

Client 端身份验证类型。

无:不进行身份验证检查–简单的 SASL 传输
LDAP:基于 LDAP/AD 的身份验证
KERBEROS:Kerberos/GSSAPI 身份验证
自定义:自定义身份验证提供程序(与属性 Configuration Properties#hive.server2.custom.authentication.class 一起使用)
PAM:可插拔身份验证模块(已在HIVE-6466的 Hive 0.13.0 中添加)
NOSASL:原始运输(在 Hive 0.13.0 中添加)

hive.server2.authentication.kerberos.keytab
  • 默认值:(空)

  • 添加于:Hive 0.11.0 和HIVE-2935

服务器主体的 Kerberos 密钥表文件。

hive.server2.authentication.kerberos.principal
  • 默认值:(空)

  • 添加于:Hive 0.11.0 和HIVE-2935

Kerberos 服务器主体。

hive.server2.authentication.client.kerberos.principal
  • 默认值:(空)

  • 添加于:Hive 2.1.1、2.4.0 和HIVE-17489

HA HiveServer2 使用的 Kerberos 服务器主体。另请参见hive.metastore.client.kerberos.principal

hive.server2.custom.authentication.class
  • 默认值:(空)

  • 添加于:Hive 0.11.0 和HIVE-2935

自定义身份验证类。当属性 Configuration Properties#hive.server2.authentication 设置为“ CUSTOM”时使用。提供的类必须是接口 org.apache.hive.service.auth.PasswdAuthenticationProvider 的正确实现。 HiveServer2 将调用其 Authenticate(user,passed)方法对请求进行身份验证。该实现可以选择扩展 Hadoop 的 org.apache.hadoop.conf.Configured 类,以获取 Hive 的 Configuration 对象。

hive.server2.enable.doAs

将此属性设置为 true 将使 HiveServer2 在用户对其进行调用时执行 Hive 操作。

hive.server2.authentication.ldap.url
  • 默认值:(空)

  • 添加于:Hive 0.11.0 和HIVE-2935

LDAP 连接 URL 的值可以是多个 LDAP 服务器的 URL 的空格分隔列表,以实现弹性。按照指定的 Sequences 尝试 URL,直到连接成功。

hive.server2.authentication.ldap.baseDN
  • 默认值:(空)

  • 添加于:Hive 0.11.0 和HIVE-2935

LDAP 基本 DN(专有名称)。

hive.server2.authentication.ldap.guidKey
  • 默认值:uid

  • 添加于:Hive 2.1.0 和HIVE-13295

此属性指示在为 LDAP 连接构建 bindDN 时(仅使用 baseDN 时)使用什么前缀。因此,bindDN 将为“<guidKey> =<user/group>,\ ”。如果在配置中使用了 userDNPattern 和/或 groupDNPattern,则不需要 guidKey。仅在使用 baseDN 时主要需要。

hive.server2.authentication.ldap.Domain
  • 默认值:(空)

  • 添加于:Hive 0.12.0 with HIVE-4707

LDAP domain.

hive.server2.authentication.ldap.groupDNPattern
  • 默认值:(空)

  • 新增于:Hive 1.3 with HIVE-7193

用冒号分隔的字符串模式列表,代表 LDAP 组的基本 DN。在要插入实际组名的地方使用“%s”。有关详细信息,请参见Group Membership

一种字符串模式的示例:* uid =%s,OU = Groups,DC = apache,DC = org *

hive.server2.authentication.ldap.groupFilter
  • 默认值:(空)

  • 新增于:Hive 1.3 with HIVE-7193

用户必须属于(至少一个组)用户应以逗号分隔的组名列表,以使身份验证成功。有关详情,请参见Group Membership

hive.server2.authentication.ldap.groupMembershipKey

组对象上的 LDAP 属性名称,其中包含作为组成员的用户,组和联系人对象的可分辨名称的列表。例如:member,uniqueMember 或 memberUid。

查找特定用户所属的 LDAP 组名称时,在 LDAP 搜索查询中使用此属性。此属性指示的 LDAP 属性的值应为用户的完整 DN 或简短的用户名或用户 ID。例如,包含“成员:uid = fooUser,ou = Users,dc = domain,dc = com”的“ fooGroup”的组条目将有助于确定“ fooUser”属于 LDAP 组“ fooGroup”。

有关详细示例,请参见Group Membership

如果自定义配置的 LDAP 查询返回的是用户组(而不是用户)(自Hive 2.1.1起),则也可以使用此属性来查找用户。有关详细信息,请参见自定义 LDAP 查询中对组的支持

hive.server2.authentication.ldap.userMembershipKey
  • 默认值:null

  • 内建于:Hive 2.2.0 with HIVE-15076

用户对象上的 LDAP 属性名称,其中包含用户是直接成员的组(主要组除外),主要组由 primaryGroupId 表示。例如:memberOf。

hive.server2.authentication.ldap.groupClassKey
  • 默认值:groupOfNames

  • 新增于:Hive 1.3 with HIVE-13295

LDAP 搜索查询中使用此属性来查找用户所属的 LDAP 组名称。此属性的值用于构造 LDAP 组搜索查询,并用于指示组的 objectClass 是什么。每个 LDAP 组都有特定的 objectClass。例如:group,groupOfNames,groupOfUniqueNames 等。

有关详细示例,请参见Group Membership

hive.server2.authentication.ldap.userDNPattern
  • 默认值:(空)

  • 新增于:Hive 1.3 with HIVE-7193

用冒号分隔的字符串模式列表,代表 LDAP 用户的基本 DN。在要插入实际用户名的位置使用“%s”。有关详细信息,请参见用户搜索列表

一种字符串模式的示例:* uid =%s,OU = Users,DC = apache,DC = org *

hive.server2.authentication.ldap.userFilter
  • 默认值:(空)

  • 新增于:Hive 1.3 with HIVE-7193

如果在 LDAP 中找到用户,则将通过身份验证的用户名的逗号分隔列表。有关详情,请参见用户搜索列表

hive.server2.authentication.ldap.customLDAPQuery
  • 默认值:(空)

  • 新增于:Hive 1.3 with HIVE-7193

用户指定的定制 LDAP 查询,该查询将用于授予/拒绝身份验证请求。如果用户是查询结果集的一部分,则身份验证成功。有关详情,请参见自定义查询字符串

hive.server2.authentication.ldap.binddn
  • 默认值:(空)

  • 添加于:Hive 4.0 with HIVE-21009

指定绑定到 LDAP 进行身份验证时要使用的标准域用户,而不是使用用户本身。这允许所有用户都没有对 LDAP 的搜索权限,而仅要求绑定用户具有搜索权限的方案。

可能值的示例:* uid = binduser,OU = Users,DC = apache,DC = org *

hive.server2.authentication.ldap.bindpw
  • 默认值:(空)

  • 添加于:Hive 4.0 with HIVE-21009

绑定域名的密码。该密码可以直接在配置文件中指定,也可以在群集的凭据提供程序中指定。如果设置了 hive.server2.authentication.ldap.binddn,则必须在某处设置此设置。

hive.server2.global.init.file.location

HiveServer2 全局初始化文件的位置或包含.hiverc 文件的目录。如果设置了属性,则该值必须是指向初始文件或初始文件所在目录的有效路径。

hive.server2.transport.mode

服务器传输模式。值可以是“二进制”或“ http”。

hive.server2.thrift.http.port
  • 默认值:10001

  • 附加在:Hive 0.12.0

处于 HTTP 模式时的端口号。

hive.server2.thrift.http.path

处于 HTTP 模式时 URL 端点的路径组件。

hive.server2.thrift.http.min.worker.threads
  • 默认值:5

  • 附加在:Hive 0.12.0

处于 HTTP 模式时的最小工作线程数。

hive.server2.thrift.http.max.worker.threads
  • 默认值:500

  • 附加在:Hive 0.12.0

处于 HTTP 模式时的最大工作线程数。

hive.server2.thrift.http.max.idle.time
  • 默认值:1800 秒(即 1800 秒)

  • 新增于:HIVE-7169中的 Hive 0.14.0

处于 HTTP 模式时,服务器上连接的最大空闲时间。

hive.server2.thrift.http.worker.keepalive.time
  • 默认值:60

  • 新增于:HIVE-7353中的 Hive 0.14.0

空闲的 http 工作线程的保持活动时间(以秒为单位)。当 Worker 数>最小 Worker 数时,多余的线程将在此时间间隔后被杀死。

hive.server2.thrift.sasl.qop
  • 默认值:auth

  • 附加在:Hive 0.12.0

Sasl QOP 值;将其设置为以下值之一,以为与 Client 端的 HiveServer2 通信启用更高级别的保护。

“ auth” –仅认证(默认)
“ auth-int” –身份验证以及完整性保护
“ auth-conf” –身份验证以及完整性和机密性保护

请注意,在大多数情况下,将 hadoop.rpc.protection 设置为比 HiveServer2 更高的级别是没有意义的。 HiveServer2 忽略 hadoop.rpc.protection,而使用 hive.server2.thrift.sasl.qop。

仅在将 HiveServer2 配置为使用 Kerberos 身份验证时才适用。

hive.server2.async.exec.threads
  • 默认值:在 Hive 0.12.0 中为50,在 Hive 0.13.0 及更高版本中为100

  • 添加于:Hive 0.12.0 中带有HIVE-4617,默认值在 Hive 0.13.0 中具有HIVE-5229更改

HiveServer2 的异步线程池中的线程数。

hive.server2.async.exec.shutdown.timeout
  • 默认值:10

  • 添加于:Hive 0.12.0 with HIVE-4617

HiveServer2 关闭将 await 异步线程终止的时间(以秒为单位)。

hive.server2.table.type.mapping

此设置反映了 HiveServer2 将如何报告 JDBC 和其他 Client 端实现的表类型,这些实现检索可用的表和受支持的表类型。

HIVE:公开 Hive 的本机表类型,例如 MANAGED_TABLE,EXTERNAL_TABLE,VIRTUAL_VIEW
CLASSIC:更通用的类型,例如 TABLE 和 VIEW

hive.server2.session.hook
  • 默认值:(空)

  • 添加于:Hive 0.12.0 with HIVE-4588

HiveServer2 的会话级钩子。

hive.server2.max.start.attempts
  • 默认值:30

  • 新增于:Hive 0.13.0 with HIVE-5794

HiveServer2 在退出之前尝试启动的次数,两次重试之间休眠 60 秒。默认值 30 将 continue 尝试 30 分钟。

hive.server2.async.exec.wait.queue.size
  • 默认值:100

  • 新增于:Hive 0.13.0 with HIVE-5229

HiveServer2 中异步线程池的 await 队列的大小。达到此限制后,异步线程池将拒绝新请求。

hive.server2.async.exec.keepalive.time
  • 默认值:10

  • 新增于:Hive 0.13.0 with HIVE-5229

空闲的 HiveServer2 异步线程(来自线程池)将在终止之前 await 新任务到达的时间(以秒为单位)。

hive.server2.long.polling.timeout
  • 默认值:5000L

  • 新增于:Hive 0.13.0 with HIVE-5217

在响应使用长轮询的异步调用之前,HiveServer2await 的时间(以毫秒为单位)。

hive.server2.allow.user.substitution
  • 默认值:true

  • 添加于:Hive 0.13.0

允许将备用用户指定为 HiveServer2 打开连接请求的一部分。

hive.server2.authentication.spnego.keytab
  • 默认值:(空)

  • 添加于:Hive 0.13.0

SPNEGO 主体的密钥表文件,可选。典型值看起来像/etc/security/keytabs/spnego.service.keytab。启用 Kerberos 安全性并使用 HTTP 传输模式时,HiveServer2 将使用此密钥表。仅当在身份验证中使用 SPNEGO 时才需要设置。

仅当指定有效的 hive.server2.authentication.spnego.principalhive.server2.authentication.spnego.keytab 时,才会接受 SPNEGO 身份验证。

hive.server2.authentication.spnego.principal
  • 默认值:(空)

  • 添加于:Hive 0.13.0

SPNEGO 服务主体,可选。典型值看起来像HTTP/_HOST@EXAMPLE.COM。当启用 Kerberos 安全性并使用 HTTP 传输模式时,HiveServer2 将使用 SPNEGO 服务主体。仅当在身份验证中使用 SPNEGO 时才需要设置。

hive.server2.authentication.pam.services
  • 默认值:(空)

  • 新增于:Hive 0.13.0 with HIVE-6466

Configuration Properties#hive.server2.authentication 类型为 PAM 时应使用的基础 PAM 服务的列表。 /etc/pam.d 中必须存在同名文件。

hive.server2.use.SSL
  • 默认值:false

  • 新增于:Hive 0.13.0 with HIVE-5351

为在 HiveServer2 中使用 SSL 加密将其设置为 true。

hive.server2.keystore.path
  • 默认值:(空)

  • 新增于:Hive 0.13.0 with HIVE-5351

SSL 证书密钥库位置。

hive.server2.keystore.password
  • 默认值:(空)

  • 新增于:Hive 0.13.0 with HIVE-5351

SSL 证书密钥库密码。

hive.server2.tez.default.queues
  • 默认值:(空)

  • 新增于:Hive 0.13.0 with HIVE-6325

与相同名称的 YARN 队列相对应的逗号分隔值列表。在 Tez 模式下启动 HiveServer2 时,需要为多个 Tez 会话设置此配置,以便在群集上并行运行。

hive.server2.tez.sessions.per.default.queue
  • 默认值:1

  • 新增于:Hive 0.13.0 with HIVE-6325

一个正整数,确定应在 Configuration Properties#hive.server2.tez.default.queues 指定的每个队列上启动的 Tez 会话数。确定每个队列上的并行性。

hive.server2.tez.initialize.default.sessions
  • 默认值:false

  • 新增于:Hive 0.13.0 with HIVE-6325

在 HiveServer 2 中使用此标志可以使用户无需打开 HiveServer 2 的 Tez 即可使用 HiveServer2.用户可能希望在没有会话池的情况下通过 Tez 运行查询。

hive.server2.session.check.interval
  • Default Value:

  • 配置单元 0.x,1.0.x,1.1.x,1.2.0:0ms

    • 配置单元 1.2.1,1.3,2.x:6h(HIVE-9842)
  • 新增于:Hive 0.14.0 with HIVE-5799

会话/操作超时的检查间隔,可以将其设置为零或负值来禁用。

hive.server2.idle.session.timeout
  • Default Value:

  • 配置单元 0.x,1.0.x,1.1.x,1.2.0:0ms

  • 新增于:Hive 0.14.0 with HIVE-5799

如果将hive.server2.session.check.interval设置为正时间值,则在此时间段内未访问会话时,会话将关闭,可以将其设置为零或负值来禁用该会话。

hive.server2.idle.operation.timeout
  • 默认值:0ms

  • 新增于:Hive 0.14.0 with HIVE-5799

如果将hive.server2.session.check.interval设置为正时间值,则在此时间段内未访问操作时,操作将关闭,可以通过将其设置为零来禁用该操作。

如果值为正,则仅在终端状态(完成,取消,关闭,错误)下检查操作。
值为负时,将检查所有操作,无论状态如何。

hive.server2.logging.operation.enabled

设置为 true 时,HiveServer2 将保存操作日志并将其提供给 Client 端。

hive.server2.logging.operation.log.location
  • 默认值:${java.io.tmpdir}/${user.name}/operation_logs

  • 新增于:Hive 0.14.0 with HIVE-4629

如果启用了日志记录功能,则存储操作日志的顶级目录。

hive.server2.logging.operation.verbose
  • 默认值:false

  • 新增于:Hive 0.14.0 with HIVE-8785

  • 在以下位置删除:Hive 1.2.0 with HIVE-10119

true时,可用于 Client 端的 HiveServer2 操作日志将非常详细。在 Hive 1.2.0 中由hive.server2.logging.operation.level代替。

hive.server2.logging.operation.level
  • 默认值:EXECUTION

  • 新增于:Hive 1.2.0 with HIVE-10119

Client 端可以在会话级别设置 HiveServer2 操作日志记录模式。

为此, Configuration Properties#hive.server2.logging.operation.enabled 应该设置为 true。允许的值为:

  • 无:忽略任何日志记录。

  • 执行:记录任务的完成。

  • 性能:执行性能日志。

  • 详细信息:所有日志。

hive.server2.thrift.http.cookie.auth.enabled
  • 默认值:true

  • 新增于:Hive 1.2.0 with HIVE-9710

设置为 true 时,处于 HTTP 传输模式的 HiveServer2 将使用基于 cookie 的身份验证机制。

hive.server2.thrift.http.cookie.max.age
  • 默认值:86400s(1 天)

  • 新增于:Hive 1.2.0 with HIVE-9710

HiveServer2 在 HTTP 模式下使用的服务器端 cookie 的最大期限(以秒为单位)。

hive.server2.thrift.http.cookie.path
  • 默认值:(空)

  • 新增于:Hive 1.2.0 with HIVE-9710

HiveServer2 生成的 cookie 的路径。

hive.server2.thrift.http.cookie.domain
  • 默认值:(空)

  • 新增于:Hive 1.2.0 with HIVE-9710

HiveServer2 生成的 cookie 的域。

hive.server2.thrift.http.cookie.is.secure
  • 默认值:true

  • 新增于:Hive 1.2.0 with HIVE-9710

HiveServer2 生成的 cookie 的安全属性。

hive.server2.thrift.http.cookie.is.httponly
  • 默认值:true

  • 新增于:Hive 1.2.0 with HIVE-9710

HiveServer2 生成的 cookie 的 HttpOnly 属性。

hive.server2.close.session.on.disconnect
  • 默认值:true

  • 添加于:Hive 2.1.0 和HIVE-13415

关闭连接后,会话将关闭。将此设置为 false 可使会话的父连接超时。

hive.server2.xsrf.filter.enabled
  • 默认值:false

  • 内建于:Hive 2.2.0 with HIVE-13853

如果启用,则如果不存在 X-XSRF-HEADERHeaders,则 HiveServer2 将阻止通过 HTTP 对其发出的任何请求。

hive.server2.job.credential.provider.path
  • 默认值:(空)

  • 内建于:Hive 2.2.0 with HIVE-14822

通过此配置属性,用户可以提供逗号分隔的 URL 列表,这些 URL 提供 Hadoop 凭证提供程序的类型和位置。 HiveServer2 使用这些凭证提供程序来提供使用 MR 或 Spark 执行引擎启动的特定于作业的凭证。尚未针对 Tez 测试此功能。

hive.server2.in.place.progress
  • 默认值:true

  • 内建于:Hive 2.2.0 with HIVE-15473

允许 HiveServer2 发送进度条更新信息。当前仅在execution enginetez 时可用.

hive.hadoop.classpath
  • 默认值:(空)

  • 新增于:Hive 0.14.0 with HIVE-8340

对于 Windowsos,Hive 在使用“ -hiveconf hive.hadoop.classpath=%HIVE_LIB%”启动 HiveServer2 时需要传递 HIVE_HADOOP_CLASSPATH Java 参数。用户可以在 hiveserver2.xml 中设置此参数。

HiveServer2 Web UI

版本 2.0.0 中引入了 HiveServer2 的 Web 界面(请参阅HiveServer2 的 Web UI)。

hive.server2.webui.host
  • 默认值:0.0.0.0

  • 新增于:Hive 2.0.0 with HIVE-12338

HiveServer2 Web UI 将侦听的主机地址。 Web UI 可用于访问 HiveServer2 配置,本地日志和 Metrics。它还可以用于检查有关活动会话和正在执行的查询的某些信息。

hive.server2.webui.port

HiveServer2 Web UI 将侦听的端口。设置为 0 或负数可禁用 HiveServer2 Web UI 功能。

hive.server2.webui.max.threads
  • 默认值:50

  • 新增于:Hive 2.0.0 with HIVE-12338

HiveServer2 Web UI 线程的最大数量。

hive.server2.webui.max.historic.queries
  • 默认值:25

  • 添加于:Hive 2.1.0 和HIVE-12550

HiveServer2 Web UI 中显示的过去查询的最大数量。

hive.server2.webui.use.ssl

将此属性设置为 true 可以对 HiveServer2 WebUI 使用 SSL 加密。

hive.server2.webui.keystore.path
  • 默认值:(空)

  • 新增于:Hive 2.0.0 with HIVE-12471

HiveServer2 WebUI 的 SSL 证书密钥库位置。

hive.server2.webui.keystore.password
  • 默认值:(空)

  • 新增于:Hive 2.0.0 with HIVE-12471

HiveServer2 WebUI 的 SSL 证书密钥库密码。

hive.server2.webui.use.spnego
  • 默认值:false

  • 新增于:Hive 2.0.0 with HIVE-12485

HiveServer2 WebUI 的 SSL 证书密钥库密码。

hive.server2.webui.spnego.keytab
  • 默认值:(空)

  • 新增于:Hive 2.0.0 with HIVE-12485

包含 HiveServer2 WebUI SPNEGO 服务主体的 Kerberos Keytab 文件的路径。

hive.server2.webui.spnego.principal
  • 默认值:HTTP/_HOST@EXAMPLE.COM

  • 新增于:Hive 2.0.0 with HIVE-12485

HiveServer2 WebUI SPNEGO 服务主体。特殊字符串_HOST 将自动替换为 Configuration Properties#hive.server2.webui.host 的值或正确的主机名。

hive.server2.webui.explain.output
  • 默认值:false

  • 在带有HIVE-18469的 Hive 3.1.0 中添加

当此配置属性设置为 true 时,查询的EXPLAIN EXTENDED输出将显示在 WebUI/Drilldown/Query Plan 选项卡中。

在 Hive 3.1.0 之前,可以使用 Configuration Properties#hive.log.explain.output 代替此配置属性。

hive.server2.webui.show.graph
  • 默认值:false

  • 在带有HIVE-17300的 Hive 4.0.0 中添加

将此属性设置为 true 可将查询计划显示为图形而不是 WebUI 中的文本。仅在 Configuration Properties#hive.server2.webui.explain.output 设置为 true 的情况下有效。

hive.server2.webui.max.graph.size
  • 默认值:25

  • 在带有HIVE-17300的 Hive 4.0.0 中添加

可显示的最大阶段数。如果阶段数超过此数目,则不会显示查询计划。仅在 Configuration Properties#hive.server2.webui.show.graphConfiguration Properties#hive.server2.webui.explain.output 设置为 true 时有效。

hive.server2.webui.show.stats
  • 默认值:false

  • 在带有HIVE-17300的 Hive 4.0.0 中添加

将此属性设置为 true 可在 WebUI 中显示 MapReduce 任务的统计信息和日志文件。仅在 Configuration Properties#hive.server2.webui.show.graphConfiguration Properties#hive.server2.webui.explain.output 设置为 true 时有效。

Spark

在 Hive 1.1.0中添加了Apache Spark(HIVE-7292和合并到主干 JIRA 的HIVE-925793529448)。有关信息,请参见设计文档Hive on SparkHive on Spark:入门。

要将 Hive 执行配置为 Spark,请将以下属性设置为“ spark”:

除了本节中列出的配置属性外,其他部分中的某些属性也与 Spark 有关:

hive.spark.job.monitor.timeout

作业监视器获取 Spark 作业状态的超时。

hive.spark.dynamic.partition.pruning
  • 默认值:false

  • 内建于:Hive 1.3.0 with HIVE-9152

设置为 true 时,将为 Spark 引擎打开动态分区修剪功能,以便通过写入临时 HDFS 文件来处理分区键上的联接,并在以后读取以删除不必要的分区。

hive.spark.dynamic.partition.pruning.map.join.only
  • 默认值:false

  • 添加于:Hive 3.0.0 with HIVE-16998

hive.spark.dynamic.partition.pruning相似,但仅当分区表上的联接可以转换为 Map 联接时,才启用 DPP。

hive.spark.dynamic.partition.pruning.max.data.size
  • 默认值:100MB

  • 内建于:Hive 1.3.0 with HIVE-9152

生成分区修剪信息的维表的最大数据大小。如果达到此限制,优化将被关闭。

hive.spark.exec.inplace.progress
  • 默认值:true

  • 内建于:Hive 2.2.0 with HIVE-15039

在终端中就地更新 Spark 作业执行进度。

hive.spark.use.file.size.for.mapjoin

如果将其设置为 true,则 Hive/Spark 中的 mapjoin 优化将在运算符树的根目录上使用与 TableScan 运算符关联的源文件大小,而不是使用运算符统计信息。

hive.spark.use.ts.stats.for.mapjoin

如果将其设置为 true,则 Hive/Spark 中的 mapjoin 优化将使用来自 TableScan 运算符的统计信息,该统计信息位于运算符树的根目录,而不是 Join 运算符的父 ReduceSink 运算符。

hive.spark.explain.user
  • 默认值:false

  • 添加于:Hive 3.0.0 with HIVE-11133

是否在用户级别显示解释结果进行 Hive-on-Spark 查询。启用后,将在用户级别记录查询的 EXPLAIN 输出。

hive.prewarm.spark.timeout
  • 默认值:5000ms

  • 添加于:Hive 3.0.0 with HIVE-17362

Configuration Properties#hive.prewarm.enabled 为 true 时,需要 await 些时间来完成 Spark 预热器的预热。

注意:Hive on Spark 的这些配置属性记录在Tez section中,因为它们也会影响 Tez:

hive.spark.optimize.shuffle.serde
  • 默认值:false

  • 添加于:Hive 3.0.0 with HIVE-15104

如果将其设置为 true,则 Hive on Spark 将为 shuffle 中的数据类型注册自定义序列化程序。这将减少数据的重排。

hive.merge.sparkfiles
  • 默认值:false

  • 添加于:Hive 1.1.0 和HIVE-7810

在 Spark DAG 转换结束时合并小文件。

hive.spark.session.timeout.period
  • 默认值:30 分钟

  • 添加于:Hive 4.0.0 和HIVE-14162

在关闭之前,Spark Remote 驱动程序应 await 提交 Spark 作业的时间。如果在此时间后未启动 Spark 作业,Spark 远程驱动程序将关闭,从而释放它一直持有的所有资源。代价是,在同一会话中运行的任何新的 Hive-on-Spark 查询都必须 await 新的 Spark Remote Driver 启动。好处是,对于长时间运行的 Hive 会话,Spark Remote Driver 不会不必要地占用资源。最小值为 30 分钟。

hive.spark.session.timeout.period
  • 默认值:60 秒

  • 添加于:Hive 4.0.0 和HIVE-14162

检查空闲 Spark 会话的频率。最小值是 60 秒。

hive.spark.use.op.stats
  • 默认值:true

  • 在带有HIVE-15796的 Hive 2.3.0 中添加

是否使用运算符统计信息确定 Hive on Spark 的减速器并行性。如果这是错误的,Hive 将使用源表统计信息来确定所有第一级还原任务的还原器并行性,以及所有其余(第二级及以后)还原器任务的所有父级的最大还原器并行性。

将此设置为 false 会触发另一种算法,用于计算每个 Spark 随机播放的分区数。这种新算法通常会导致每个洗牌的分区数量增加。

hive.spark.use.ts.stats.for.mapjoin
  • 默认值:false

  • 在带有HIVE-15489的 Hive 2.3.0 中添加

如果将其设置为 true,则 Hive/Spark 中的 mapjoin 优化将使用来自 TableScan 运算符的统计信息,该统计信息位于运算符树的根目录,而不是 Join 运算符的父 ReduceSink 运算符。当用于普通联接→Map 联接转换的运算符统计信息不准确时,将此选项设置为 true 很有用。

hive.spark.use.groupby.shuffle
  • 默认值:true

  • 在带有HIVE-15580的 Hive 2.3.0 中添加

设置为 true 时,使用 Spark 的RDD#groupByKey执行分组方式。设置为 false 时,请使用 Spark 的RDD#repartitionAndSortWithinPartitions执行分组依据。尽管#groupByKey在运行分组 bys 时具有更好的性能,但它可能会使用过多的内存。将此设置为 false 可能会减少内存使用量,但会影响性能。

mapreduce.job.reduces
  • 默认值:-1(禁用)

  • 在 Hive1.1.0 和HIVE-7567中添加

设置每个 Spark shuffle 阶段的化简任务数量(例如,执行 Spark shuffle 时的分区数量)。默认情况下设置为-1(禁用);而是根据 Hive 数据统计信息动态计算 reduce 任务的数量。将其设置为恒定值可为所有 Spark shuffle 阶段设置相同数量的分区。

远程 Spark 驱动程序

远程 Spark 驱动程序是在 Spark 集群中启动的应用程序,用于提交实际的 Spark 作业。它是在HIVE-8528中引入的。它是一个长期存在的应用程序,它在当前用户的第一次查询后初始化,一直运行到关闭用户会话为止。以下属性控制远程 Spark 驱动程序与生成它的 HiveClient 端之间的远程通信。

hive.spark.client.future.timeout

从 HiveClient 端到远程 Spark 驱动程序的请求超时。

hive.spark.client.connect.timeout

远程 Spark 驱动程序连接回 HiveClient 端时超时。

hive.spark.client.server.connect.timeout

HiveClient 端和远程 Spark 驱动程序之间的握手超时。通过两个过程检查。

hive.spark.client.secret.bits

HiveClient 端与远程 Spark 驱动程序之间通信时,所生成的 Secret 中的随机位数。四舍五入至最接近的 8 的倍数。

hive.spark.client.rpc.server.address
  • 默认值:hive.spark.client.rpc.server.address,如果不可用,则为 localhost。

  • 新增于:Hive 2.1.0 和HIVE- 12568

HiverServer2 主机的服务器地址,用于 HiveClient 端和远程 Spark 驱动程序之间的通信。

hive.spark.client.rpc.threads

远程 Spark 驱动程序的 RPC 事件循环的最大线程数。

hive.spark.client.rpc.max.size
  • 默认值:52,428,800(50 * 1024 * 1024 或 50 MB)

  • 新增至:Hive 1.1.0HIVE-9337

HiveClient 端与远程 Spark 驱动程序之间进行通信的最大消息大小(以字节为单位)。默认值为 50 MB。

hive.spark.client.channel.log.level

远程 Spark 驱动程序的通道日志记录级别。调试,错误,信息,跟踪,警告之一。如果未设置,则选择 TRACE。

Tez

在 Hive 0.13.0 中添加了Apache Tez(HIVE-4660HIVE-6098)。有关信息,请参见设计文档Hive,尤其是安装与配置部分。

除了本节中列出的配置属性外,其他部分中的某些属性也与 Tez 相关:

Configuration Properties#hive.mapjoin.optimized.hashtable
Configuration Properties#hive.mapjoin.optimized.hashtable.wbsize
hive.jar.directory

这是 Hive 在 Tez 模式下将查找的位置,以查找在站点范围内安装的 Hive 实例。有关默认行为,请参见 Configuration Properties#hive.user.install.directory

hive.user.install.directory

如果 Hive(仅在 Tez 模式下)无法在 Configuration Properties#hive.jar.directory 中找到可用的 Hive jar,它将 Hive jar 上传到\ < hive.user.install.directory > /< user_name >并使用它来运行查询。

hive.compute.splits.in.am

是在本地还是在ApplicationMaster(仅 Tez)中生成拆分。

hive.rpc.query.plan

是通过本地资源还是 RPC 发送查询计划。

hive.prewarm.enabled

为 Tez(0.13.0 至 1.2.x)或 Tez/Spark(1.3.0+)启用容器预热。这仅适用于 Hadoop 2.

hive.prewarm.numcontainers

控制要预热 Tez(0.13.0 至 1.2.x)或 Tez/Spark(1.3.0+)的容器数。这仅适用于 Hadoop 2.

hive.merge.tezfiles

在 Tez DAG 的末尾合并小文件。

hive.tez.input.format
  • 默认值:org.apache.hadoop.hive.ql.io.HiveInputFormat

  • 添加于:Hive 0.13.0 中带有HIVE-6498HIVE-6360

Tez 的默认 Importing 格式。 Tez 组在 AM(ApplicationMaster)中拆分。

hive.tez.input.generate.consistent.splits

在 AM 中生成拆分时是否生成一致的拆分位置。

设置为 false 将根据线程的生成方式将拆分的位置和 Sequences 随机化。

与 LLAP 相关。

hive.tez.container.size

默认情况下,Tez 会生成一个 Map 器大小的容器。这可以用来覆盖默认值。

hive.tez.java.opts

默认情况下,Tez 将使用 Map 任务中的 Java 选项。这可以用来覆盖默认值。

hive.convert.join.bucket.mapjoin.tez
  • 默认值:false

  • 新增于:Hive 0.13.0 with HIVE-6447

当将 Tez 用作执行引擎时,是否可以将联接自动转换为 Hive 中的存储桶 Map 联接( Configuration Properties#hive.execution.engine 设置为“ tez”)。

hive.tez.log.level
  • 默认值:INFO

  • 新增于:Hive 0.13.0 with HIVE-6743

用于作为 DAG 的一部分执行的任务的日志级别。仅在使用 Configuration Properties#hive.tez.java.opts 配置 Java 选项时使用。

hive.localize.resource.wait.interval
  • 默认值:5000

  • 新增于:Hive 0.13.0 with HIVE-6782

await 另一个线程为 Hive-Tez 本地化相同资源的时间(以毫秒为单位)。

hive.localize.resource.num.wait.attempts
  • 默认值:5

  • 新增于:Hive 0.13.0 with HIVE-6782

await 在 Hive-Tez 中本地化资源的尝试次数。

hive.tez.smb.number.waves
  • 默认值:0.5

  • 新增于:Hive 0.14.0 with HIVE-8409

运行 SMB(sort-merge-bucket)联接的波数。占用集群的帐户。理想情况下应为 1 波。

hive.tez.cpu.vcores
  • 默认值:-1

  • 新增于:Hive 0.14.0 with HIVE-8452

默认情况下,Tez 会要求 MapReduce 配置为每个容器使用多个 CPU。这可以用来覆盖默认值。

hive.tez.auto.reducer.parallelism
  • 默认值:false

  • 新增于:Hive 0.14.0 with HIVE-7158

打开 Tez 的自动减速器并行功能。启用后,Hive 仍将估计数据大小并设置并行度估计。 Tez 将对源顶点的输出大小进行采样,并在运行时根据需要调整估计值。

hive.tez.max.partition.factor
  • 默认值:2

  • 新增于:Hive 0.14.0 with HIVE-7158

启用自动减速器并行性时,将使用此因子对随机边缘中的数据进行过度分区。

hive.tez.min.partition.factor
  • 默认值:0.25

  • 新增于:Hive 0.14.0 with HIVE-7158

启用自动减速器并行性时,将使用此系数为 Tez 指定的减速器数量设置下限。

hive.tez.exec.print.summary
  • 默认值:false

  • 新增于:Hive 0.14.0 with HIVE-8495

如果为 true,则显示在Hive CLIBeelineClient 端上执行的每个查询的执行步骤的细分。

hive.tez.exec.inplace.progress
  • 默认值:true

  • 新增于:Hive 0.14.0 with HIVE-8495

使用Hive CLI时,在终端中就地更新 Tez 作业执行进度。

LLAP

Hive 2.0(HIVE-7926和相关任务)中添加了实时和流程(LLAP)功能。有关详细信息,请参见Hive 中的 LLAP

LLAP 添加以下配置属性。

hive.llap.execution.mode
  • 默认值:none

  • Possible Values:

  • none: not tried

    • map: only map operators are considered for llap

    • all: every operator is tried; but falls back to no-llap in case of problems

    • only: same as "all" but stops with an exception if execution is not possible(从 2.2.0 开始,带有HIVE-15135)

    • 自动:转换由配置单元控制

  • 新增于:Hive 2.0.0 with HIVE-9635

选择查询片段将在容器中还是在 LLAP 中运行。如果设置为“ all”,则所有内容都将在 LLAP 中运行; “ only”类似于“ all”,但是禁用了对容器的回退,因此如果查询不能在 LLAP 中运行,查询将失败。

hive.server2.llap.concurrent.queries
  • 默认值:-1

  • 新增于:Hive 2.0.0 with HIVE-10647

通过 llap 并行允许的查询数。负数表示“无穷大”。

LLAP Client

hive.llap.client.consistent.splits
  • 默认值:false

  • 新增于:Hive 2.0.0 with HIVE-12470

是否设置拆分位置以匹配运行 LLAP 守护程序的节点,而不是使用拆分本身提供的位置。

LLAP Web 服务

hive.llap.daemon.web.port
  • 默认值:15002

  • 新增于:Hive 2.0.0 with HIVE-11358

LLAP 守护程序 Web UI 端口。

hive.llap.daemon.web.ssl
  • 默认值:false

  • 新增于:Hive 2.0.0 with HIVE-11358

LLAP 守护程序 Web UI 是否应使用 SSL

hive.llap.auto.auth
  • 默认值:true

  • 添加于:Hive 2.0.0 和..

是否设置 Hadoop 配置以在 LLAP Web 应用程序中启用身份验证。

hive.llap.daemon.service.principal
  • 默认值:(空)

  • 新增于:Hive 2.0.0 with HIVE-12341

LLAP 守护程序的服务主体的名称。

hive.llap.daemon.service.hosts

明确指定用于 LLAP 调度的主机。对于测试很有用。默认情况下,使用 YARN 注册表。

hive.llap.daemon.task.preemption.metrics.intervals
  • Default Value:30,60,300

  • 添加于:Hive 2.1.0 和HIVE-13536

逗号分隔的整数集,表示百分位数延迟度量标准的所需翻转间隔(以秒为单位)。
LLAP 守护程序任务调度程序度量标准用于杀死任务的时间(由于抢占)以及即将被抢占的任务浪费的有用时间。

LLAP Cache

hive.llap.object.cache.enabled
  • 默认值:true

  • 新增于:Hive 2.0.0 with HIVE-9849

在 LLAP 中缓存对象(计划,哈希表等)

hive.llap.io.use.lrfu
  • 默认值:false

  • 添加于:Hive 2.0.0 和..

ORC 低级缓存是否应使用“最少/经常使用”(LRFU)缓存策略,而不是默认的先进先出(FIFO)。

hive.llap.io.lrfu.lambda
  • 默认值:0.01f

  • 可能的值:0 到 1 之间

  • 添加于:Hive 2.0.0 和..

Lambda for ORC 低级缓存 LRFU 缓存策略。必须在[0,1]中。

0 使 LRFU 表现得像 LFU,1 使其表现得像 LRU,两者之间的值相应地保持平衡。

LLAP I/O

hive.llap.io.enabled
  • 默认值:null

  • 添加于:Hive 2.0.0,其中HIVE-12078有更新

LLAP I/O 层是否启用。删除属性或将其设置为 false 可禁用 LLAP I/O。

hive.llap.io.cache.orc.size
  • 默认值:1Gb

  • 添加于:Hive 2.0.0 和..

IO 分配器或 ORC 低级缓存的最大大小。

hive.llap.io.threadpool.size
  • 默认值:10

  • 新增于:Hive 2.0.0 with HIVE-10081

指定用于低级 IO 线程池的线程数。

hive.llap.io.orc.time.counters
  • 默认值:true

  • 新增于:Hive 2.0.0 with HIVE-10777

是否为 LLAP IO 层启用时间计数器(在 HDFS 中花费的时间,等等)

hive.llap.io.memory.mode
  • 默认值:缓存

  • 可能的值:缓存,分配器,无

  • 新增于:Hive 2.0.0 with HIVE-12597

LLAP IO 内存使用情况;

“缓存”(默认)使用带有自定义堆外分配器的数据和元数据缓存,
“分配器”使用自定义分配器而不使用缓存,
“ none”都不使用(此模式可能会导致性能显着下降)

hive.llap.io.allocator.alloc.min
  • 默认值:128Kb

  • 新增于:Hive 2.0.0 with HIVE-12597

LLAP 伙伴分配器可能进行的最小分配。低于此的分配将填充为最小分配。
对于 ORC,通常应与预期的压缩缓冲区大小相同,或者其次幂为 2.必须为 2 的幂。

hive.llap.io.allocator.alloc.max
  • 默认值:16Mb

  • 新增于:Hive 2.0.0 with HIVE-12597

可以从 LLAP 伙伴分配器获得最大分配。对于 ORC,应与预期的最大 ORC 压缩缓冲区大小一样大。必须是 2 的幂。

hive.llap.io.allocator.arena.count
  • 默认值:8

  • 新增于:Hive 2.0.0 with HIVE-12597

LLAP 低级缓存的竞技场计数;缓存将以(size/arena_count)个字节为单位进行分配。此大小必须为\ <= 1Gb and > =最大分配;否则,将使用调整后的尺寸。建议使用 2 的幂。

hive.llap.io.memory.size
  • 默认值:1Gb

  • 新增于:Hive 2.0.0 with HIVE-12597

IO 分配器或 ORC 低级缓存的最大大小。

hive.llap.io.allocator.direct
  • 默认值:true

  • 新增于:Hive 2.0.0 with HIVE-12597

ORC 低级缓存是否应使用直接分配。

hive.llap.io.allocator.nmap
  • 默认值:false

  • 添加于:Hive 2.1.0 和HIVE-13029

ORC 低级缓存是否应使用内存 Map 分配(直接 I/O)

hive.llap.io.allocator.nmap.path
  • 默认值:/ tmp

  • 添加于:Hive 2.1.0 和HIVE-13029

用于将 NVDIMM/NVMe 闪存存储 Map 到 ORC 低级缓存的目录位置。

LLAP CBO

hive.llap.auto.allow.uber
  • 默认值:true

  • 新增于:Hive 2.0.0 with HIVE-9777

是否允许计划器在 AM 中运行顶点。

hive.llap.auto.enforce.tree
  • 默认值:true

  • 新增于:Hive 2.0.0 with HIVE-9635

在考虑顶点之前,强制所有 parent 都处于包 lap 状态

hive.llap.auto.enforce.vectorized
  • 默认值:true

  • 新增于:Hive 2.0.0 with HIVE-9635

在考虑顶点之前,强制将 Importing 向量化

hive.llap.auto.enforce.stats
  • 默认值:true

  • 新增于:Hive 2.0.0 with HIVE-9635

在考虑顶点之前,强制使列状态可用。

hive.llap.auto.max.input.size
  • 默认值:10 * 1024 * 1024 * 1024L

  • 新增于:Hive 2.0.0 with HIVE-9635

在考虑顶点之前检查 Importing 大小(-1 禁用检查)

hive.llap.auto.max.output.size
  • 默认值:1 * 1024 * 1024 * 1024L

  • 新增于:Hive 2.0.0 with HIVE-9635

在考虑顶点之前检查输出大小(-1 禁用检查)

LLAP Metrics

hive.llap.queue.metrics.percentiles.intervals
  • 默认值:空白

  • 添加于:Hive 2.0.0 和..

逗号分隔的整数集,表示 LLAP 守护程序生产者-Consumer 队列上的百分数延迟度量标准所需的翻转间隔(以秒为单位)。

默认情况下,百分比延迟度量标准处于禁用状态。

hive.llap.management.rpc.port
  • 默认值:15004

  • 添加到:2.0.0 和HIVE-12341

LLAP 守护程序 Management 服务的 RPC 端口。

LLAP UDF 安全

基于白名单的 UDF 支持(HIVE-12852)。

hive.llap.allow.permanent.fns
  • 默认值:true

  • 新增于:2.1.0 with HIVE-13307

LLAP 决策者是否应允许使用永久性 UDF。

hive.llap.daemon.download.permanent.fns

LLAP 守护程序是否应为永久 UDF 本地化资源。

LLAP Security

hive.llap.daemon.keytab.file
  • 默认值:(空)

  • 新增于:Hive 2.0.0 with HIVE-12341

包含 LLAP 守护程序的服务主体的 Kerberos Keytab 文件的路径。

hive.llap.zk.sm.principal
  • 默认值:(空)

  • 新增于:Hive 2.0.0 with HIVE-12341

与 ZooKeeper SecretManager 的 ZooKeeper 对话的主体的名称。

hive.llap.zk.sm.keytab.file
  • 默认值:(空)

  • 新增于:Hive 2.0.0 with HIVE-12341

Kerberos Keytab 文件的路径,该文件包含用于与 ZooKeeper SecretManager 的 ZooKeeper 对话的主体。

hive.llap.zk.sm.connectionString
  • 默认值:(空)

  • 新增于:Hive 2.0.0 with HIVE-12341

ZooKeeper SecretManager 的 ZooKeeper 连接字符串。

hive.llap.daemon.acl

LLAP 守护程序的 ACL。

hive.llap.management.acl

LLAP 守护程序 Management 的 ACL。

hive.llap.daemon.delegation.token.lifetime
  • 默认值:14d

  • 新增于:Hive 2.0.0 with HIVE-12341

LLAP 委派令牌生存期,以秒为单位(如果未指定单位)。

事务和 Compactor

Hive 0.13.0(HIVE-5317及其子任务)中添加了具有行级 ACID 功能的 Hive 事务。有关详细信息,请参见Hive 中的 ACID 和 Transaction

要打开 HiveTransaction,请更改其默认值,如下所述:

这些参数还必须具有非默认值才能打开 Hive 事务:

Transactions

hive.txn.manager
  • 默认值:org.apache.hadoop.hive.ql.lockmgr.DummyTxnManager

  • HiveTransaction 值:org.apache.hadoop.hive.ql.lockmgr.DbTxnManager

  • 新增于:Hive 0.13.0 with HIVE-5843

将其设置为 org.apache.hadoop.hive.ql.lockmgr.DbTxnManager 作为打开 Hive 事务的一部分。默认的 DummyTxnManager 复制 Hive-0.13 之前的行为,并且不提供任何事务。

启用 HiveTransaction 还需要对 **** Configuration Properties#hive.compactor.initiator.on **** , **** Configuration Properties#hive.compactor.worker.threads **** , **** **** Configuration Properties#hive.support.concurrency **** **** 进行适当的设置, **** **** **** Configuration Properties#hive.enforce.bucketing **** **** **** (仅配置单元 0.x 和 1.x)和 **** **** Configuration Properties#hive.exec.dynamic.partition.mode **** **** 。

hive.txn.strict.locking.mode
  • 默认值:true

  • 内建于:Hive 2.2.0 with HIVE-15774

在严格模式下,非 ACID 资源使用标准的 R/W 锁定语义,例如 INSERT 将获得排他锁。在非严格模式下,对于非 ACID 资源,INSERT 将仅获取共享锁,这允许两次并发写入同一分区,但仍允许锁 Management 器在写入表时防止 DROP TABLE 等。 hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager.时只有苹果

hive.txn.timeout
  • 默认值:300

  • 新增于:Hive 0.13.0 with HIVE-5843

如果 Client 端未发送心跳 signal,则宣布终止事务的时间(以秒为单位)。

hive.txn.heartbeat.threadpool.size
  • 默认值:5

  • 添加于:Hive 1.3.0 和 2.0.0 与HIVE-12366

用于心跳的线程数。对于 Hive CLI,一个线程就足够了,但是 HiveServer2 需要几个线程。

hive.timedout.txn.reaper.start
  • 默认值:100s

  • 内建于:Hive 1.3.0 with HIVE-11317

元存储启动后,将运行第一个收割者的时间延迟(中止超时事务的过程)。

hive.timedout.txn.reaper.interval
  • 默认值:180s

  • 内建于:Hive 1.3.0 with HIVE-11317

描述收割机(中止超时事务的进程)运行频率的时间间隔。

hive.writeset.reaper.interval
  • 默认值:60s

  • 添加于:Hive 1.3.0 和 2.1.0,带有HIVE-13395

WriteSet 收割机运行的频率。

hive.txn.max.open.batch
  • 默认值:1000

  • 新增于:Hive 0.13.0 with HIVE-5843

一次调用 open_txns()可以获取的最大事务数。

这可控制同时打开多少个流媒体代理(例如FlumeStorm)。然后,流代理将该数量的条目写入单个文件(每个 Flume 代理或 Storm bolt)。因此,增加此值将减少流代理创建的delta files的数量。但是,这也增加了 Hive 在任何给定时间必须跟踪的未清事务数量,这可能会对读取性能产生负面影响。

hive.max.open.txns
  • 默认值:100000

  • 添加于:Hive 1.3.0 和 2.1.0,带有HIVE-13249

最大未结 Transaction 数。如果当前未完成的 Transaction 达到此限制,则将来的未完成 Transaction 请求将被拒绝,直到数量低于该限制。

hive.count.open.txns.interval
  • 默认值:1s

  • 添加于:Hive 1.3.0 和 2.1.0,带有HIVE-13249

两次检查之间的时间(以秒为单位),以计算未清 Transaction。

hive.txn.retryable.sqlex.regex
  • 默认值:(空)

  • 添加于:Hive 1.3.0 和 2.1.0,带有HIVE-12637

SQL 状态,错误代码和可重试 SQLException 的错误消息的正则表达式模式的逗号分隔列表,适用于 Hive Metastore 数据库。

例如:无法序列化.,40001 $,^ Deadlock,. ORA-08176.*

正则表达式将与之匹配的字符串具有以下形式,其中 ex 是 SQLException:

ex.getMessage()“(SQLState =” ex.getSQLState()“,ErrorCode =” ex.getErrorCode()“)”

Compactor

hive.compactor.initiator.on
  • 默认值:false

  • Hive Transactions 值:true(仅适用于 Thrift Metastore 服务的一个实例)

  • 新增于:Hive 0.13.0 with HIVE-5843

是否在此 Metastore 实例上运行启动程序线程和清理程序线程。在打开 Hive 事务的过程中,在 Thrift Metastore 服务的一个实例上将此属性设置为 true。有关打开事务所需的参数的完整列表,请参阅 Configuration Properties#hive.txn.manager

至关重要的是,仅在一个 metastore 服务实例(尚未实施)上启用此功能。

hive.compactor.worker.threads
  • 默认值:0

  • Hive Transactions 值:至少在一个 Thrift Metastore 服务实例上大于0

  • 新增于:Hive 0.13.0 with HIVE-5843

在此 metastore 实例上运行多少个压缩程序工作线程。在打开 Hive 事务的过程中,在 Thrift Metastore 服务的一个或多个实例上将此值设置为正数。有关打开事务所需的参数的完整列表,请参阅 Configuration Properties#hive.txn.manager

工作线程产生 MapReduce 作业以进行压缩。他们自己不做压实。一旦确定需要压缩,增加工作线程的数量将减少压缩表或分区所花费的时间。随着更多 MapReduce 作业将在后台运行,这还将增加 Hadoop 群集上的后台负载。

hive.compactor.worker.timeout
  • 默认值:86400

  • 新增于:Hive 0.13.0 with HIVE-5843

时间,以秒为单位,之后将宣布压缩作业失败并重新排队压缩。

hive.compactor.check.interval
  • 默认值:300

  • 新增于:Hive 0.13.0 with HIVE-5843

两次检查之间的时间(以秒为单位),以查看是否需要压缩任何表或分区。这应该保持较高水平,因为每次压缩检查都需要对 NameNode 进行多次调用。

减小此值将减少需要压缩的表或分区开始压缩的时间。但是,检查是否需要压缩需要对自上次大型压缩以来已对其执行事务的每个表或分区多次调用 NameNode。因此,减小此值将增加 NameNode 上的负载。

hive.compactor.cleaner.run.interval
  • 默认值:5000

  • 新增于:Hive 0.14 和HIVE-8258

两次运行清洁程序线程之间的时间(以毫秒为单位)。增加此值将延长清理旧的,不再使用的数据版本所需的时间,并降低 Metastore 服务器上的负载。减小此值将缩短清理旧的,不再使用的数据版本所需的时间,并增加 Metastore 服务器上的负载。

hive.compactor.delta.num.threshold
  • 默认值:10

  • 新增于:Hive 0.13.0 with HIVE-5843

表或分区中将触发较小压缩的增量目录数。

hive.compactor.delta.pct.threshold
  • 默认值:0.1

  • 新增于:Hive 0.13.0 with HIVE-5843

增量文件相对于基础的百分比(分数)大小,这将触发大的压缩。 (1.0 = 100%,因此默认值为 0.1 = 10%.)

hive.compactor.abortedtxn.threshold
  • 默认值:1000

  • 新增于:Hive 0.13.0 with HIVE-5843

涉及给定表或分区的,将触发主要压缩的中止事务的数量。

Compaction History

hive.compactor.history.retention.succeeded
  • 默认值:3

  • 添加于:Hive 1.3.0 和 2.0.0 与HIVE-12353

要保留在历史 Logging 的成功压缩条目数(每个分区)。

hive.compactor.history.retention.failed
  • 默认值:3

  • 添加于:Hive 1.3.0 和 2.0.0 与HIVE-12353

要保留在历史 Logging 的失败压缩条目数(每个分区)。

hive.compactor.history.retention.attempted
  • 默认值:2

  • 添加于:Hive 1.3.0 和 2.0.0 与HIVE-12353

尝试保留在历史 Logging 的压缩条目数(每个分区)。

hive.compactor.history.reaper.interval
  • 默认值:2m

  • 添加于:Hive 1.3.0 和 2.0.0 与HIVE-12353

控制清除压实历史记录的过程运行的频率。

hive.compactor.initiator.failed.compacts.threshold
  • 默认值:2

  • 添加于:Hive 1.3.0 和 2.0.0 与HIVE-12353

给定分区的连续压缩失败次数,之后启动器将停止尝试自动计划压缩。仍然可以使用ALTER TABLE来启动压缩。手动启动的压缩成功后,自动启动的压缩将恢复。请注意,该值必须小于 Configuration Properties#hive.compactor.history.retention.failed

Indexing

在 Hive 0.7.0 中使用HIVE-417添加了索引,在 Hive 0.8.0 中使用HIVE-1803添加了位图索引。有关更多信息,请参见Indexing

hive.index.compact.file.ignore.hdfs
  • 默认值:false

  • 添加于:Hive 0.7.0 和HIVE-1889

true时,存储在索引文件中的 HDFS 位置将在运行时被忽略。如果数据已移动或集群名称已更改,则索引数据仍应可用。

hive.optimize.index.filter
  • 默认值:false

  • 添加于:Hive 0.8.0 和HIVE-1644

是否启用索引自动使用。

hive.optimize.index.filter.compact.minsize
  • 默认值:5368709120

  • 添加于:Hive 0.8.0 和HIVE-1644

自动在其上使用压缩索引的 Importing 的最小大小(以字节为单位)。

hive.optimize.index.filter.compact.maxsize
  • 默认值:-1

  • 添加于:Hive 0.8.0 和HIVE-1644

自动在其上使用压缩索引的 Importing 的最大大小(以字节为单位)。负数等于无穷大。

hive.index.compact.query.max.size
  • 默认值:10737418240

  • 添加于:Hive 0.8.0 和HIVE-2096

使用压缩索引的查询可以读取的最大字节数。负值等于无穷大。

hive.index.compact.query.max.entries
  • 默认值:10000000

  • 添加于:Hive 0.8.0 和HIVE-2096

使用紧凑索引的查询期间要读取的最大索引条目数。负值等于无穷大。

hive.exec.concatenate.check.index
  • 默认值:true

  • 添加于:Hive 0.8.0 和HIVE-2125

如果将其设置为 true,则在具有索引的表/分区上执行 ALTER TABLE tbl_name [partSpec] CONCATENATE 时,Hive 将引发错误。用户想要将此设置为 true 的原因是因为它可以帮助用户避免处理所有索引下降,重新创建,重建工作。这对于具有数千个分区的表非常有帮助。

hive.optimize.index.autoupdate
  • 默认值:false

  • 添加于:Hive 0.8.0 和HIVE-2354

失效时是否启用索引的自动重建。
警告:重建索引可能是一个漫长且计算量大的操作;在许多情况下,最好手动重建索引。

hive.optimize.index.groupby
  • 默认值:false

  • 添加到:Hive 0.8.1 中带有HIVE-1694

hive.index.compact.binary.search
  • 默认值:true

  • 添加到:Hive 0.8.1 中带有HIVE-2535

在可能的情况下,是否使用二进制搜索在索引表中查找与过滤器匹配的条目。

Statistics

有关如何收集和使用 Hive 表,分区和列统计信息的信息,请参见Hive 统计

hive.stats.dbclass
  • 默认值:jdbc:derby(配置单元 0.7 到 0.12)或fs(配置单元 0.13 和更高版本)

  • 添加到:Hive 0.7 with HIVE-1361

  • 新值:在 0.13 中添加了countercustom,在HIVE-4632中添加了fs并在HIVE-6500中添加了fs

Hive 0.7 到 0.12:存储临时 Hive 统计信息的默认数据库。 StatsSetupConst.java 中定义的选项是jdbc:derbyjdbc:mysqlhbase

Hive 0.13 和更高版本:存储临时 Hive 统计信息的存储。在基于文件系统的统计信息收集(“ fs”)中,每个任务将其收集的统计信息写入文件系统上的文件中,该文件将在作业完成后进行汇总。支持的值是fs(文件系统),jdbc:<database>(其中* <database> *可以是derbymysql等),hbasecountercustom,如 StatsSetupConst.java 中所定义。

hive.stats.autogather
  • 默认值:true

  • 添加到:Hive 0.7 with HIVE-1361

使用此标志可以在 Hive DML操作期间自动收集和更新统计信息。

Note

不会收集LOAD DATA条语句的统计信息。

hive.stats.column.autogather
  • 默认值:false(Hive 2.1 和更高版本 2.x); true(Hive 3.0及更高版本)

  • 添加于:Hive 2.1

扩展统计信息自动收集以收集列级别的统计信息。

hive.stats.jdbcdriver
  • 默认值:org.apache.derby.jdbc.EmbeddedDriver

  • 添加到:Hive 0.7 with HIVE-1361

存储临时 Hive 统计信息的数据库的 JDBC 驱动程序。

hive.stats.dbconnectionstring
  • 默认值:jdbc:derby:;databaseName=TempStatsStore;create=true

  • 添加到:Hive 0.7 with HIVE-1361

存储临时 Hive 统计信息的数据库的默认连接字符串。

hive.stats.default.publisher
  • 默认值:(空)

  • 添加到:Hive 0.7 with HIVE-1923

如果 Configuration Properties#hive.stats.dbclass 不是 JDBC 或 HBase(Hive 0.12.0 及更低版本),或者 Configuration Properties#hive.stats.dbclass 是自定义类型(Hive 0.13.0),则默认使用的 Java 类(实现 StatsPublisher 接口)及更高版本:HIVE-4632)。

hive.stats.default.aggregator
  • 默认值:(空)

  • 添加到:Hive 0.7 with HIVE-1923

如果 Configuration Properties#hive.stats.dbclass 不是 JDBC 或 HBase(Hive 0.12.0 及更低版本),或者 Configuration Properties#hive.stats.dbclass 是自定义类型(Hive 0.13.0),则默认使用的 Java 类(实现 StatsAggregator 接口)及更高版本:HIVE-4632)。

hive.stats.jdbc.timeout
  • 默认值:30

  • 添加到:Hive 0.7 with HIVE-1961

JDBC 连接和语句使用的超时值(秒数)。

hive.stats.atomic
  • 默认值:false

  • 添加到:Hive 0.7 with HIVE-1961

如果将其设置为 true,则仅当所有类型的统计信息(行数,文件数,字节数等)可用时,才会更新 Metastore 统计信息。否则,将使用所有可用的东西以尽力而为的方式更新 Metastore 统计信息。

hive.stats.retries.max
  • 默认值:0

  • 添加到:Hive 0.8 with HIVE-2127

统计发布者/聚集者获得更新中间数据库的异常时的最大重试次数。默认为不尝试失败。

hive.stats.retries.wait
  • 默认值:3000

  • 添加到:Hive 0.8 with HIVE-2127

下次重试之前的基本 await 窗口(以毫秒为单位)。实际的 await 时间由 baseWindow *失败 baseWindow (失败 1)(0.0,1.0 之间的随机数)计算得出。

hive.stats.collect.rawdatasize
  • 默认值:true

  • 添加到:Hive 0.8 with HIVE-2185

如果为 true,则在分析表时会收集原始数据大小。

hive.client.stats.publishers

以逗号分隔的统计信息发布者列表,将在每个作业的计数器上调用。Client 端统计发布者被指定为实现 org.apache.hadoop.hive.ql.stats.ClientStatsPublisher 接口的 Java 类的名称。

hive.client.stats.counters

hive.client.stats.publishers (当想要限制其发布时)应该感兴趣的计数器子集。应该使用非显示名称。

hive.stats.reliable
  • 默认值:false

  • 添加于:Hive 0.10.0 和HIVE-1653

  • 新行为:带有HIVE-3777的 Hive 0.13.0

查询是否会因为无法完全准确地收集统计信息而失败。如果将其设置为 true,则由于无法准确计算统计信息,可能无法从分区表或未分区表中读取/写入分区表或未分区表。如果将其设置为 false,则操作将成功。

Hive 0.13.0 及更高版本中,如果 hive.stats.reliable 为 false 并且无法正确计算统计信息,则该操作仍然可以成功并更新统计信息,但是它将分区属性“ areStatsAccurate”设置为 false。如果应用程序需要准确的统计信息,则可以在后台获取它们。

hive.stats.ndv.error

NDV 估算值的标准误差,以百分比表示。这提供了准确性和计算成本之间的权衡。较低的误差值表示较高的准确性和较高的计算成本。 (NDV 表示不同值的数量.)

它只影响 FM 草图(不是默认的 HLL 算法),在 FM-Sketch 中,它会计算必要的位向量数以达到精度。

hive.stats.collect.tablekeys
  • 默认值:false

  • 新增:Hive0.10 和HIVE-3501

表的 join 和 group by 键是否在 QueryPlan 中派生和维护。这对于确定如何访问表以及确定是否应对其进行存储桶很有用。

hive.stats.collect.scancols
  • 默认值:false

  • 添加于:Hive 0.11 中带有HIVE-3940

在 QueryPlan 中是否跟踪列访问。这对于确定如何访问表以及确定是否存在可以修剪的浪费列很有用。

hive.stats.key.prefix.max.length
  • 默认值:200(配置单元 0.11 和 0.12)或150(Hive 0.13和更高版本)

  • 添加于:Hive 0.11 中带有HIVE-3750

确定用于中间统计信息收集的键的前缀是否超过某个长度时,是否使用键的哈希值。如果值\ < 0 then hashing is never used, if the value > = 0,则仅当键前缀的长度超过该值时才使用哈希。密钥前缀定义为密钥中任务 ID 之前的所有内容。对于计数器类型统计信息,其最大值为 mapreduce.job.counters.group.name.max ,默认情况下为 128.

hive.stats.key.prefix.reserve.length
  • 默认值:24

  • 新增于:Hive 0.13 with HIVE-6229

统计关键字后缀的保留长度。当前仅对计数器类型统计有意义,计数器统计应使完整统计键的长度小于 Configuration Properties#hive.stats.key.prefix.max.length 配置的最大长度。对于计数器类型统计信息,它应大于 LB 规范的长度(如果存在)。

hive.stats.max.variable.length
  • 默认值:100

  • 新增于:Hive 0.13 with HIVE-5369

为了估计流经 Hive/Tez 的运算符的数据大小(用于缩减器估计等),将平均行大小乘以每个运算符的总行数。平均行大小是根据该行中所有列的平均列大小计算得出的。在没有列统计信息的情况下,对于可变长度列(如字符串,字节等),将使用此值。对于固定长度的列,使用其对应的 Java 等效大小(浮点数-4 字节,双精度数-8 字节等)。

hive.analyze.stmt.collect.partlevel.stats
  • 默认值:true

  • 新增于:Hive 0.14.0 with HIVE-7609

在 0.14 之前的版本中,在未分配分区的情况下,在分区表上,使用分析语句收集表级统计信息。该行为从 0.14 开始已更改为改为收集所有分区的分区级别统计信息。如果需要收集汇总表级统计信息的旧行为,请将此配置的值更改为 false。这仅影响列统计信息。基本统计信息不受此配置影响。

hive.stats.list.num.entries
  • 默认值:10

  • 新增于:Hive 0.13 with HIVE-5369

为了估计流经 Hive/Tez 的运算符的数据大小(用于缩减器估计等),将平均行大小乘以每个运算符的总行数。平均行大小是根据该行中所有列的平均列大小计算得出的。在没有列统计信息的情况下,对于可变长度的复杂列(如 list),可以使用此配置属性指定平均条目数/值。

hive.stats.map.num.entries
  • 默认值:10

  • 新增于:Hive 0.13 with HIVE-5369

为了估计流经 Hive/Tez 的运算符的数据大小(用于缩减器估计等),将平均行大小乘以每个运算符的总行数。平均行大小是根据该行中所有列的平均列大小计算得出的。在没有列统计信息的情况下,对于可变长度的复杂列(例如 map),可以使用此配置属性指定平均条目数/值。

hive.stats.map.parallelism

Hive/Tez 优化器估计流过每个运算符的数据大小。对于 GROUPBY 运算符,需要知道准确计算数据大小的 Map 端并行性。默认情况下,此值设置为 1,因为优化器在编译时不知道 Map 器的数量。此 Hive 配置属性可用于指定用于 GROUPBY 运算符的数据大小计算的 Map 器数。 (此配置属性在版本 0.14.0 中已删除.)

hive.stats.fetch.partition.stats

用统计信息 Comments 运算符树需要分区级别的基本统计信息,例如行数,数据大小和文件大小。从元存储中获取分区统计信息。当分区数量很多时,获取每个所需分区的分区统计信息可能会很昂贵。此标志可用于禁止从 metastore 获取分区统计信息。禁用此标志后,Hive 将调用文件系统以获取文件大小,并从行模式估计行数。

hive.stats.fetch.column.stats
  • 默认值:false

  • 新增于:Hive 0.13 with HIVE-5898

用统计信息 Comments 运算符树需要列统计信息。列统计信息是从元存储中获取的。当列数很高时,获取每个所需列的列统计信息可能会很昂贵。此标志可用于禁止从 metastore 获取列统计信息。

hive.stats.join.factor
  • 默认值:(float) 1.1

  • 新增于:Hive 0.13 with HIVE-5921

Hive/Tez 优化器估计流过每个运算符的数据大小。 JOIN 运算符使用列统计信息来估计从中流出的行数,从而估计数据大小。在没有列统计信息的情况下,此因子确定从 JOIN 运算符流出的行数。

hive.stats.deserialization.factor
  • Default Value:

  • Hive0.13 至 2.x.x:(float) 1.0

  • Hive 3.0.0 及更高版本:(float) 10.0

  • 新增于:Hive 0.13 with HIVE-5921

  • Hive 3.0中的默认值从 1.0 更改为 10.0

Hive/Tez 优化器估计流过每个运算符的数据大小。在缺乏行数和数据大小等基本统计信息的情况下,文件大小用于估计行数和数据大小。由于表/分区中的文件已序列化(并且可以选择压缩),因此无法可靠地确定行数和数据大小的估计值。该因子乘以文件大小即可解决序列化和压缩问题。

hive.stats.avg.row.size
  • 默认值:10000

  • 新增于:Hive 0.13 with HIVE-5921

在没有表/分区统计信息的情况下,将使用平均行大小来估计行数/数据大小。

hive.compute.query.using.stats
  • 默认值:false

  • 新增于:Hive 0.13.0 with HIVE-5483

设置为 true 时,Hive 将纯粹使用元存储中存储的统计信息来回答一些查询,如 min,max 和 count(1)。对于基本统计信息收集,请将配置属性 Configuration Properties#hive.stats.autogather 设置为 true。要收集更高级的统计信息,请运行 ANALYZE TABLE 查询。

hive.stats.gather.num.threads
  • 默认值:10

  • 新增于:Hive 0.13.0 with HIVE-6578

partialscan/noscan 分析命令用于分区表的线程数。这仅适用于实现 StatsProvidingRecordReader 接口的文件格式(例如ORC)。

hive.stats.fetch.bitvector
  • 默认值:false

  • 添加于:Hive 3.0.0 with HIVE-16997

Hive 是否在计算不同值(ndv)的数量时是否获取位向量。如果要使用没有位向量的旧模式,请将其设置为 false。

Runtime Filtering

hive.tez.dynamic.semijoin.reduction
  • 默认值:true

  • 添加到:Hive 2.2 with HIVE-15269

hive.tez.min.bloom.filter.entries
  • 默认值:1000000

  • 添加到:Hive 2.3 with HIVE-16260

hive.tez.max.bloom.filter.entries
  • 默认值:100000000

  • 添加到:Hive 2.2 with HIVE-15269

hive.tez.bloom.filter.factor
  • 默认值:2.0

  • 添加到:Hive 2.3 with HIVE-16260

hive.tez.bigtable.minsize.semijoin.reduction
  • 默认值:1000000

  • 添加到:Hive 2.3 with HIVE-16260

身份验证和授权

有关授权模式的概述,请参见Hive Authorization

受限/隐藏/内部列表和白名单

hive.conf.restricted.list
  • Default Value:

  • Hive 0.11.0 :(为空,但暗含此列表)

    • Hive0.13.0:hive.security.authenticator.manager, hive.security.authorization.manager(HIVE-5953)

    • Hive0.14.0:hive.security.authenticator.manager, hive.security.authorization.manager, hive.users.in.admin.role(HIVE-6437)

    • Hive2.1.0:hive.security.authenticator.manager, hive.security.authorization.manager, hive.users.in.admin.role, hive.server2.xsrf.filter.enabled(HIVE-13853)

    • Hive2.2.0:hive.security.authenticator.manager, hive.security.authorization.manager, hive.security.metastore.authorization.manager, hive.security.metastore.authenticator.manager, hive.users.in.admin.role, hive.server2.xsrf.filter.enabled, hive.security.authorization.enabled(HIVE-14099),hive.server2.authentication.ldap.baseDN(HIVE-15713),hive.server2.authentication.ldap.url(HIVE-15713),hive.server2.authentication.ldap.Domain(HIVE-15713),hive.server2.authentication.ldap.groupDNPattern(HIVE-15713),hive.server2.authentication.ldap.groupFilter(HIVE-15713hive.server2.authentication.ldap.groupMembershipKey(HIVE-15713),hive.server2.authentication.ldap.userMembershipKey(HIVE-15713),hive.server2.authentication.ldap.groupClassKey(HIVE-15713),hive.server2.authentication.ldap.customLDAPQuery(HIVE-15713)

    • 配置单元 3.0.0:以上所有内容以及以下内容: hive.spark.client.connect.timeout(HIVE-16876),hive.spark.client.server.connect.timeout(HIVE-16876),hive.spark.client.channel.log.level(HIVE-16876),hive.spark.client.rpc.max.size(HIVE-16876),hive.spark.client.rpc.threads(HIVE-16876),hive.spark.client.secret.bits(HIVE-16876),hive.spark.client.rpc.server.address(HIVE-16876) hive.spark.client.rpc.server.port(HIVE-16876),hikari.*(HIVE-17318),dbcp.*(HIVE-17319),hadoop.bin.path(HIVE-18248),yarn.bin.path(HIVE-18248)

  • 添加于:Hive 0.11.0 和HIVE-2935

用逗号分隔的配置属性列表,这些属性在运行时不可变。例如,如果 Configuration Properties#hive.security.authorization.enabled 设置为 true,则应将其包括在此列表中,以防止 Client 端在运行时将其更改为 false。

hive.conf.hidden.list
  • Default Value:

  • Hive 1.2.2: j avax.jdo.option.ConnectionPassword,hive.server2.keystore.password ( HIVE-9013)

Hive 2.3.0: fs.s3.awsAccessKeyId,fs.s3.awsSecretAccessKey,fs.s3n.awsAccessKeyId,fs.s3n.awsSecretAccessKey,fs.s3a.access.key,fs.s3a.secret.key,fs.s3a.proxy.password (HIVE-14588)
  • Hive 3.0.0: dfs.adls.oauth2.credential,fs.adl.oauth2.credential ( HIVE-18228)

以逗号分隔的配置选项列表,普通用户不应读取,例如密码。

hive.conf.internal.variable.list
  • 默认值:hive.added.files.path,hive.added.jars.path,hive.added.archives.path

  • 内建于:Hive 1.3.0 with HIVE-12346

用逗号分隔的配置选项列表,这些配置选项在内部使用,不应通过 set 命令设置。

hive.security.command.whitelist
  • 默认值:set,reset,dfs,add,delete,compile[,list,reload]

  • 添加于:Hive 0.13.0 中带有HIVE-5400HIVE-5252

  • 在 Hive 0.14.0 中进行了更改,以将“列表”和“重新加载”包含在HIVE-7592(“列表”)和HIVE-7553(“重新加载”)中

用户授权执行的非 SQL Hive 命令的逗号分隔列表。这可用于限制授权命令集。受支持的命令列表是从 Hive 0.13.0 开始的“设置,重置,dfs,添加,删除,编译”或从 Hive 0.14.0 开始的“默认设置,重置,dfs,添加,列表,删除,重新加载,编译”和默认设置所有这些命令均已授权。要限制这些命令中的任何一个,请将 hive.security.command.whitelist 设置为其中没有该命令的值。

基于 SQL 标准的 Hive 授权白名单

有关在基于 SQL 标准的授权中授权 set 命令的白名单属性的信息,请参见下面的 Configuration Properties#hive.security.authorization.sqlstd.confwhitelist

HiveClient 端安全

hive.security.authorization.enabled
  • 默认值:false

  • 添加于:Hive 0.7.0

启用或禁用 HiveClient 端授权。

hive.security.authorization.manager
  • 默认值:org.apache.hadoop.hive.ql.security.authorization.DefaultHiveAuthorizationProvider

  • 添加于:Hive 0.7.0

HiveClient 端授权 Management 器类名称。用户定义的授权类应实现接口 org.apache.hadoop.hive.ql.security.authorization.HiveAuthorizationProvider。

hive.security.authenticator.manager
  • 默认值:org.apache.hadoop.hive.ql.security.HadoopDefaultAuthenticator

  • 添加于:Hive 0.7.0

配置单元 Client 端身份验证器 Management 器类名称。用户定义的身份验证器应实现 org.apache.hadoop.hive.ql.security.HiveAuthenticationProvider 接口。

hive.security.authorization.createtable.user.grants
  • 默认值:(空)

  • 添加于:Hive 0.7.0

创建表后,将自动授予某些用户特权。像“ userX,userY:select; userZ:create”之类的示例将向 userX 和 userY 授予选择特权,并在创建新表时向 userZ 授予创建特权。

hive.security.authorization.createtable.group.grants
  • 默认值:(空)

  • 添加于:Hive 0.7.0

每当创建表时,都会自动授予某些组特权。诸如“ groupX,groupY:select; groupZ:create”之类的示例将向 groupX 和 groupY 授予选择特权,并在创建新表时向 groupZ 授予创建特权。

hive.security.authorization.createtable.role.grants
  • 默认值:(空)

  • 添加于:Hive 0.7.0

每当创建表时,特权便会自动授予某些角色。像“ roleX,roleY:select; roleZ:create”之类的示例将向 roleX 和 roleY 授予选择特权,并在创建新表时向 roleZ 授予创建特权。

hive.security.authorization.createtable.owner.grants
  • 默认值:(空)

  • 添加于:Hive 0.7.0

创建表后,将自动授予所有者的特权。诸如“ select,drop”之类的示例将向表所有者授予 select 和 drop 特权。请注意,默认值使表的创建者无法访问该表。

Hive Metastore 安全

在 Hive 0.10.0(HIVE-3705)中添加了 Metastore 端安全性。有关更多信息,请参见授权概述Metastore Server 中基于存储的授权中的详细信息。

有关常规的 metastore 配置属性,请参阅Configuration Properties#MetaStore

hive.metastore.pre.event.listeners
  • 默认值:(空)

  • 添加到:Hive 0.9.0 和HIVE-2853

每当数据库,表和分区被创建,更改或删除时,事件前侦听器类都将被加载到 metastore 一侧以运行代码。在 hive-site.xml 中将此配置属性设置为org.apache.hadoop.hive.ql.security.authorization.AuthorizationPreEventListener,以打开 Hive Metastore 端安全性。

hive.security.metastore.authorization.manager
  • 默认值:org.apache.hadoop.hive.ql.security.authorization.DefaultHiveMetastoreAuthorizationProvider

  • 添加于:Hive 0.10.0 和HIVE-3705;在 Hive 0.14.0 中使用HIVE-7209进行了修订

  • Hive 0.13 和更早版本:*要在元存储中用于授权的授权 Management 器类名称。用户定义的授权类应实现接口org.apache.hadoop.hive.ql.security.authorization.HiveMetastoreAuthorizationProvider

*配置单元 0.14 和更高版本:*将在元存储中用于授权的授权 Management 器类的名称(以逗号分隔)。用户定义的授权类应实现接口 org.apache.hadoop.hive.ql.security.authorization.HiveMetastoreAuthorizationProvider。所有授权 Management 器类都必须成功授权 metastore API 调用才能允许执行命令。

DefaultHiveMetastoreAuthorizationProvider 实现标准的 Hive 授予/吊销模型。还提供了基于存储的授权实现,以用作此配置属性的值:

  • org.apache.hadoop.hive.ql.security.authorization.StorageBasedAuthorizationProvider

它使用 HDFS 权限提供授权,而不是使用 Hive 样式的基于授权的授权。

hive.security.metastore.authenticator.manager
  • 默认值:org.apache.hadoop.hive.ql.security.HadoopDefaultMetastoreAuthenticator

  • 添加于:Hive 0.10.0 和HIVE-3705

要在身份验证存储库中使用的身份验证器 Management 器类名称。用户定义的身份验证器类应实现接口org.apache.hadoop.hive.ql.security.HiveAuthenticationProvider

hive.security.metastore.authorization.auth.reads
  • 默认值:true

  • 新增于:Hive 0.14.0 with HIVE-8221

如果是这样,则 Metastore 授权者将授权对数据库和表的读取操作。参见基于存储的授权

hive.metastore.token.signature
  • 默认值:“”(空字符串)

  • 在 Hive 0.7.0 中添加,在 Hive 2.1.0 中添加到 HiveConf

从当前用户的令牌中选择令牌时要匹配的委托令牌服务名称。

基于 SQL 标准的授权

Version

Hive 0.13.0 引入了基于SQL 标准授权模型的细粒度授权。有关功能说明和子任务列表,请参见HIVE-5837

hive.users.in.admin.role
  • 默认值:(空)

  • 新增于:Hive 0.13.0 with HIVE-5959

用逗号分隔的用户列表,将在元存储启动时添加到 ADMIN 角色。以后仍然可以添加更多用户。

hive.security.authorization.sqlstd.confwhitelist
  • 默认值:(空,但包含以下隐式显示的列表)

  • 添加于:Hive 0.13.0 中带有HIVE-6846;在 Hive 0.14.0 中使用HIVE-8534更新,并在以后的版本中更新了一些 JIRA 问题

Java 正则表达式。使用SQL 标准基础授权时,用户可以修改与此正则表达式匹配的配置属性。

如果未设置此参数,则由 SQL 标准授权者添加默认列表。要显示当前版本的默认列表,请使用命令“ set hive.security.authorization.sqlstd.confwhitelist”。

在 Hive 0.13.0 中,默认的白名单具有以下属性(对于同一行,每行排列一个属性,请参见HIVE-6846):

hive.exec.reducers.bytes.per.reducer,hive.exec.reducers.max,hive.map.aggr,hive.map.aggr.hash.percentmemory,hive.map.aggr.hash.force.flush.memory。阈值,hivemapaggr 哈希最小减少量,hivegroupbyskewindata,hive 优化优化 multigroupby 常见区别,hive 优化索引组,hiveoptimize.ppd,hiveoptimize.ppd。存储,hive.ppd 识别传递性,hive.optimize.groupby,hive.optimize.sort.dynamic.partition,hive.optimize.union.move,hive.multigroupby.singlereducer,hive.map.groupby.sorted,hive.map。 groupby.sorted.testmode,hive.optimize.skewjoin,hive.optimize.skewjoin.compiletime,hive.mapred.mode,hive.enforce.bucketmapjoin,hive.exec.compress.output,hive.exec.compress.intermediate,hive。 exec.parallel,hive.exec.parallel.thread.number,hive.exec.rowoffset,hive.merge.mapfiles,hive.merge.mapredfiles,hive.merge.tezfiles,hive.ignore.mapjoin.hint,hive.auto。 convert.join,hive.auto.convert.join.noconditionaltask,hive.auto.convert.join.noconditionaltask.size,hive autoconvert.join.unstaged,hive.enforce.bucketing,hive.enforce.sorting,hive.enforce.sortmergebucketmapjoin,hive.auto.convert.sortmerge.join,hive.execution.engine,hive.vectorized.execution 的使用.enabled,hive.mapjoin.optimized.keys,hive.mapjoin.lazy.hashtable,hive.exec.check.crossproducts,hive.compat,hive.exec.dynamic.partition.mode,mapred.reduce.tasks,mapred.output .compression.codec,mapred.map.output.compression.codec,mapreduce.job.reduce.slowstart.completedmaps,mapreduce.job.queuename。

Version Information

Hive 0.14.0 将新参数添加到默认白名单(请参阅HIVE-8534)。

Hive 1.1.0 删除了一些参数(请参阅HIVE-9331)。

配置单元 1.2.0 和 1.2.1 添加了更多新参数(请参见HIVE-10578HIVE-10678HIVE-10967)。

配置单元 1.3.0、2.1.1 和 2.2.0 添加了其他新参数(请参见HIVE-14073)。

Hive 3.0.0 修复了 1.2.1 中添加的参数,将 mapred.job.queuename 更改为 mapred.job.queue.name(请参见HIVE-17584)。

当某些参数与 HiveConf.java 中白名单的正则表达式规范之一匹配时,会自动添加这些参数(例如,Hive 2.0.0 中的 hive.log.trace.id –见HIVE-12419)。

请注意,白名单检查后仍会执行 Configuration Properties#hive.conf.restricted.list 检查。

hive.security.authorization.sqlstd.confwhitelist.append
  • 默认值:(空)

  • 新增于:Hive 0.14.0 with HIVE-8534

第二个 Java regex,除了hive.security.authorization.sqlstd.confwhitelist之外,配置属性的白名单也将匹配。请勿在值中包含开头|

使用此正则表达式而不是更新hive.security.authorization.sqlstd.confwhitelist的原始正则表达式意味着您可以追加到由 SQL 标准授权设置的默认值,而不必完全替换它。

hive.server2.builtin.udf.whitelist
  • 默认值:(空,视为未设置-允许所有 UDF)

  • 新增至:Hive 1.1.0HIVE-8893

以逗号分隔的允许执行的内置 UDF 列表。如果从查询中调用,则未包含在列表中的 UDF 将返回错误。如果设置为空,则将其视为通配符–将允许所有 UDF。请注意,此配置是在启动时由 HiveServer2 读取的,并且在会话中使用“ set”命令更改此配置不会更改行为。

hive.server2.builtin.udf.blacklist

逗号分隔的内置 UDF 列表,不允许执行。如果从查询中调用,列表中包含的 UDF 将返回错误。请注意,此配置是在启动时由 HiveServer2 读取的,并且在会话中使用“ set”命令更改此配置不会更改行为。

hive.security.authorization.task.factory
  • 默认值:org.apache.hadoop.hive.ql.parse.authorization.HiveAuthorizationTaskFactoryImpl

  • 新增至:Hive 1.1.0HIVE-8611

要覆盖默认的授权 DDL 处理,请将 hive.security.authorization.task.factory 设置为实现 org.apache.hadoop.hive.ql.parse.authorization.HiveAuthorizationTaskFactory 接口的类。

Archiving

有关 Hive 对Hadoop archives的支持的一般信息,请参见归档以减少文件计数

fs.har.impl
  • 默认值:org.apache.hadoop.hive.shims.HiveHarFileSystem

  • 添加于:Hive 0.8.1

用于访问 Hadoop 存档的实现。请注意,这不适用于低于 0.20 的 Hadoop 版本。

hive.archive.enabled
  • 默认值:false

  • 添加于:Hive0.6.0

是否允许归档操作。

hive.archive.har.parentdir.settable
  • 默认值:false

  • 添加于:Hive0.6.0

  • 删除于:Hive 0.10.0 with HIVE-3338

在新的 Hadoop 版本中,必须在创建 HAR 时设置父目录。由于仅凭版本号很难检测到此功能,因此需要在 Hive 版本 0.6.0 至 0.9.0 中手动设置此配置变量。 (此配置属性在版本 0.10.0 中已删除.)

Locking

有关锁定的一般信息,请参见Hive 并发模型

hive.support.concurrency
  • 默认值:false

  • 添加于:Hive 0.7.0 和HIVE-1293

Hive 是否支持并发。 ZooKeeper实例必须已启动并正在运行,默认的 Hive 锁 Management 器才能支持读写锁。

设置为true以支持插入...值,更新和删除个事务(Hive 0.14.0 及更高版本)。有关打开 HiveTransaction 所需的参数的完整列表,请参阅 Configuration Properties#hive.txn.manager

hive.lock.manager
  • 默认值:org.apache.hadoop.hive.ql.lockmgr.zookeeper.ZooKeeperHiveLockManager

  • 添加于:Hive 0.7.0 和HIVE-1293

hive.support.concurrency设置为true时要使用的锁 Management 器。

hive.lock.mapred.only.operation
  • 默认值:false

  • 添加于:Hive 0.8.0

此配置属性用于控制是否仅锁定需要执行至少一个 Map 作业的查询。

hive.lock.query.string.max.length
  • 默认值:1000000

  • 添加于:Hive 3.0.0

要存储在锁中的查询字符串的最大长度。默认值为 1000000,因为 znode 的数据限制为 1MB

hive.lock.numretries
  • 默认值:100

  • 添加于:Hive 0.7.0 和HIVE-1293

您想要尝试获得所有锁的总次数。

hive.unlock.numretries
  • 默认值:10

  • 添加于:Hive 0.8.1

您要进行一次解锁的总次数。

hive.lock.sleep.between.retries
  • 默认值:60

  • 添加于:Hive 0.7.0 和HIVE-1293

两次重试之间的睡眠时间(以秒为单位)。

hive.zookeeper.quorum
  • 默认值:(空)

  • 添加于:Hive 0.7.0 和HIVE-1293

与之对话的 ZooKeeper 服务器列表。只有读/写锁才需要。

hive.zookeeper.client.port
  • Default Value:

  • 配置单元 0.7.0 :(空)

    • Hive0.8.0 及更高版本:2181(HIVE-2196)
  • 添加于:Hive 0.7.0 和HIVE-1293

与之通信的 ZooKeeper 服务器的端口。只有读/写锁才需要。

hive.zookeeper.session.timeout
  • Default Value:

  • 配置单元 0.7.0 至 1.1.x:600000ms

    • Hive1.2.0 及更高版本:1200000ms(HIVE-8890)``
  • 添加于:Hive 0.7.0 和HIVE-1293

ZooKeeperClient 端的会话超时(以毫秒为单位)。如果未在超时时间内发送心跳,则 Client 端将断开连接,结果,所有锁都将释放。

hive.zookeeper.namespace
  • 默认值:hive_zookeeper_namespace

  • 添加于:Hive 0.7.0

在其下创建所有 ZooKeeper 节点的父节点。

hive.zookeeper.clean.extra.nodes
  • 默认值:false

  • 添加于:Hive 0.7.0

在会话结束时清理额外的节点。

hive.lockmgr.zookeeper.default.partition.name
  • 默认值:__HIVE_DEFAULT_ZOOKEEPER_PARTITION__

  • 添加于:Hive 0.7.0 和HIVE-1293

ZooKeeperHiveLockManager 为Hive 锁 Management 器时的默认分区名称。

Metrics

Hive 收集的 Metrics 可以在HiveServer2 Web UI中查看。有关更多信息,请参见Hive Metrics

hive.metastore.metrics.enabled
  • 默认值:false

  • 在 Hive1.3.0 和 2.0.0 中使用HIVE-10761添加

在 Hive Metastore Service 上启用 Metrics。 (有关其他 Metastore 配置属性,请参见Metastore配置属性#Hive Metastore 安全部分。)

hive.server2.metrics.enabled
  • 默认值:false

  • 在 Hive1.3.0 和 2.0.0 中使用HIVE-10761添加

在 HiveServer2 上启用 Metrics。 (有关其他 HiveServer2 配置属性,请参阅Configuration Properties#HiveServer2部分。)

hive.service.metrics.class
  • 默认值:org.apache.hadoop.hive.common.metrics.metrics2.CodahaleMetrics

  • 在 Hive1.3.0 和 2.0.0 中使用HIVE-10761添加

HiveMetrics 子系统实现类。新的实现是“ org.apache.hadoop.hive.common.metrics.metrics2.CodahaleMetrics”。若要恢复到 Hive 1.3 和 2.0 之前的旧实现及其内置的 JMX 报告功能,请选择“ org.apache.hadoop.hive.common.metrics.LegacyMetrics”。

hive.service.metrics.reporter
  • 默认值:“ JSON_FILE, JMX

  • 在 Hive1.3.0 和 2.0.0 中使用HIVE-10761添加

  • 不推荐使用:Hive 3.0.0 和HIVE-16206

度量标准类 org.apache.hadoop.hive.common.metrics.metrics2.CodahaleMetrics 的报告程序类型,逗号分隔的值列表 JMX,CONSOLE,JSON_FILE。

Hive 2.1.0 中已使用HIVE-13480添加了新的报告程序类型 HADOOP2.

hive.service.metrics.codahale.reporter.classes
  • 默认值:“ org.apache.hadoop.hive.common.metrics.metrics2.JsonFileMetricsReporter,org.apache.hadoop.hive.common.metrics.metrics2.JmxMetricsReporter”

  • 在带有HIVE-16206的 Hive 3.0.0 中添加

度量标准类 org.apache.hadoop.hive.common.metrics.metrics2.CodahaleMetrics 的报告程序实现类的逗号分隔列表。如果存在,则覆盖 hive.service.metrics.reporter conf。

hive.service.metrics.file.location
  • 默认值:“ /tmp/report.json

  • 在 Hive1.3.0 和 2.0.0 中使用HIVE-10761添加

对于hive.service.metrics.class org.apache.hadoop.hive.common.metrics.metrics2.CodahaleMetrics 和hive.service.metrics.reporter JSON_FILE,这是本地 JSONMetrics 文件转储的位置。该文件将在hive.service.metrics.file.frequency的每个间隔被覆盖。

hive.service.metrics.file.frequency
  • 默认值:5 秒

  • 在 Hive1.3.0 和 2.0.0 中使用HIVE-10761添加

对于hive.service.metrics.class org.apache.hadoop.hive.common.metrics.metrics2.CodahaleMetrics 和hive.service.metrics.reporter JSON_FILE,这是更新 JSONMetrics 文件的频率。

hive.service.metrics.hadoop2.component
  • 默认值:“ hive

  • 在带有HIVE-13480的 Hive 2.1.0 中添加

对于hive.service.metrics.class org.apache.hadoop.hive.common.metrics.metrics2.CodahaleMetrics 和hive.service.metrics.reporter HADOOP2,这是要提供给 HADOOP2Metrics 系统的组件名称。理想情况下,MetaStore 的“ hivemetastore”和 HiveServer2 的“ hiveserver2”。Metrics 将每隔hive.service.metrics.hadoop2.frequency更新。

hive.service.metrics.hadoop2.frequency
  • 默认值:30 秒

  • 在带有HIVE-13480的 Hive 2.1.0 中添加

对于hive.service.metrics.class org.apache.hadoop.hive.common.metrics.metrics2.CodahaleMetrics 和hive.service.metrics.reporter HADOOP2,这是更新 HADOOP2Metrics 系统的频率。

Clustering

hive.cluster.delegation.token.store.class
  • 默认值:org.apache.hadoop.hive.thrift.MemoryTokenStore

  • 添加于:Hive 0.9.0

委托令牌存储实现。设置为 org.apache.hadoop.hive.thrift.ZooKeeperTokenStore 以实现负载平衡的集群。

hive.cluster.delegation.token.store.zookeeper.connectString
  • 默认值:localhost:2181

  • 添加于:Hive 0.9.0

ZooKeeper 令牌存储连接字符串。

hive.cluster.delegation.token.store.zookeeper.znode
  • 默认值:/hive/cluster/delegation

  • 添加于:Hive 0.9.0

令牌存储数据的根路径。

hive.cluster.delegation.token.store.zookeeper.acl
  • 默认值:sasl:hive/host1@EXAMPLE.COM:cdrwa,sasl:hive/host2@EXAMPLE.COM:cdrwa

  • 添加于:Hive 0.9.0

令牌存储条目的 ACL。列表逗号分隔了群集的所有服务器主体。

Regions

Reverted by HIVE-2612 in Hive 0.9.0

本节中曾经记录的配置属性(hive.use.input.primary.region,hive.default.region.name和 hive.region.properties)在 Hive 0.9.0 发行版之前临时存在于主干中,但在发行版之前已被删除。参见HIVE-2612HIVE-2965

对于以前因将其包含在本文档中而造成的任何混乱,我们深表歉意。

命令行界面

hive.cli.print.header
  • 默认值:false

  • 添加于:Hive 0.7.0

是否打印查询输出中的列名。

hive.cli.print.current.db
  • 默认值:false

  • 添加于:Hive 0.8.1

是否在 Hive 提示中包括当前数据库。

HBase StorageHandler

hive.hbase.wal.enabled
  • 默认值:true

  • 添加于:Hive 0.6.0 和HIVE-1383

是否强制写入 HBase 应该强制到预写日志中。禁用此功能可以提高 HBase 写入性能,以免发生崩溃时丢失写入的风险。

hive.hbase.generatehfiles

当 HBaseStorageHandler 应该生成 hfile 而不是对联机表进行操作时为 true。

Hive Web 界面(HWI)(从 Hive 2.2.0 开始删除的组件)

hive.hwi.war.file
  • 默认值:lib/hive-hwi-<version>.war

  • 新增于:Hive 0.3.0(默认值为lib/hive_hwi.war),默认值在 Hive 0.5(HIVE-978HIVE-1183)中更改为lib/hive-hwi-<version>.war

  • 在以下位置删除:Hive 2.2.0 with HIVE-15622

相对于${HIVE_HOME},这将设置 HWI war 文件的路径。 (此配置属性在版本 2.2.0 中已删除.)

hive.hwi.listen.host
  • 默认值:0.0.0.0

  • 添加于:Hive 0.3.0

  • 在以下位置删除:Hive 2.2.0 with HIVE-15622

这是 Hive Web 界面将监听的主机地址。 (此配置属性在版本 2.2.0 中已删除.)

hive.hwi.listen.port
  • 默认值:9999

  • 添加于:Hive 0.3.0

  • 在以下位置删除:Hive 2.2.0 with HIVE-15622

这是 Hive Web 界面将监听的端口。 (此配置属性在版本 2.2.0 中已删除.)

Replication

hive.repl.rootdir
  • 默认值:/usr/hive/repl/

  • 在带有HIVE-15151的 Hive 2.2.0 中添加

这是 HDFS 根目录,Hive 的 REPL DUMP 命令将在此目录下运行,从而创建转储以复制到其他仓库。

hive.repl.replica.functions.root.dir
  • 默认值:/usr/hive/repl/functions

  • 在带有HIVE-16 591的 Hive 3.0.0 中添加

复制仓库上的根目录,repl 子系统将在其中存储来自主仓库的 jar。

hive.repl.partitions.dump.parallelism
  • 默认值:100

  • 在 Hive 3.0.0 中添加HIVE-16895;默认值已用HIVE-17625更改(也在 3.0.0 中)

在 REPL DUMP 期间将用于转储分区数据信息的线程数。

hive.repl.approx.max.load.tasks
  • 默认值:10000

  • 在带有HIVE-16896的 Hive 3.0.0 中添加

提供动态生成下一组任务之前应执行的最大任务数的近似值。该数字是近似值,因为 Hive 会停止在稍高的数字上,原因是某些事件可能导致任务增量超过指定的限制。

hive.repl.dump.metadata.only
  • 默认值:false

  • 在带有HIVE-18352的 Hive 3.0.0 中添加

指示 REPL DUMP 命令是只转储元数据信息(true)还是转储数据元数据(false)。

hive.repl.dump.include.acid.tables
  • 默认值:false

  • 在带有HIVE-18352的 Hive 3.0.0 中添加

指示复制转储是否应包含有关 ACID 表的信息。它应与hive.repl.dump.metadata.only结合使用,以启用 ACID 表的元数据复制,而 ACID 表不需要将相应的事务语义应用于目标。当支持 ACID 表复制时,可以将其删除。

hive.repl.add.raw.reserved.namespace
  • 默认值:false

  • 在带有HIVE-18341的 Hive 3.0.0 中添加

对于在源和目标上具有相同加密密钥的 TDE,允许 Distcp 超级用户访问文件系统中的原始字节,而无需在源上解密然后在目标上加密。

Blobstore(即 Amazon S3)

从版本 2.2.0 开始,添加了一组配置,以在处理存储在 blobstore 系统(例如 Amazon S3)上的表时提高读/写性能。

hive.blobstore.supported.schemes
  • 默认值:s3,s3a,s3n

  • 内建于:Hive 2.2.0 with HIVE-14270

Hive 用于应用特殊读/写性能改进的受支持的 Blobstore 方案列表。

hive.blobstore.optimizations.enabled
  • 默认值:true

  • 内建于:Hive 2.2.0 with HIVE-15121

此参数是全局变量,当在 blobstore 上运行时,它可以进行许多优化。
如果此变量设置为 false,则不会使用某些优化,例如 Configuration Properties#hive.blobstore.use.blobstore.as.scratchdir

hive.blobstore.use.blobstore.as.scratchdir
  • 默认值:false

  • 内建于:Hive 2.2.0 with HIVE-14270

将其设置为 true 可以直接在 blob 存储系统上使用临时目录(这可能会导致性能下降)。

hive.exec.input.listing.max.threads
  • 默认值:0(已禁用)

  • 内建于:Hive 2.2.0 with HIVE-15881

将此设置为 Hive 用于列出文件系统中文件信息的最大线程数,例如文件大小和每个表的文件数(对于 blobstore,建议> 1)。

Test Properties

注意:这是开发人员在运行 Hive 测试时使用的配置属性的不完整列表。对于其他测试属性,搜索“ hive.test”。在hive-default.xml.template 或 HiveConf.java中。另请参见直线查询单元测试

hive.test.mode
  • 默认值:false

  • 添加于:Hive 0.4.0

Hive 是否在测试模式下运行。如果是,它将打开采样并为输出表名添加前缀。

hive.test.mode.prefix
  • 默认值:test_

  • 添加于:Hive 0.4.0

如果 Hive 在测试模式下运行,请使用此字符串为输出表添加前缀。

hive.test.mode.samplefreq
  • 默认值:32

  • 添加于:Hive 0.4.0

如果 Hive 在测试模式下运行并且表没有存储分区,则采样频率。

hive.test.mode.nosamplelist
  • 默认值:(空)

  • 添加于:Hive 0.4.0

如果 Hive 在测试模式下运行,请不要对上面用逗号分隔的表列表进行采样。

hive.exec.submit.local.task.via.child
  • 默认值:true

  • 新增于:Hive 0.14.0 with HIVE-7271

确定本地任务(通常为 mapjoin 哈希表生成阶段)是否在单独的 JVM 中运行(建议true)。避免了产生新的 JVM 的开销,但可能导致内存不足的问题。 false设置仅在运行unit tests时有用。有关详情,请参见HIVE-7271

HCatalog 配置属性

从 Hive 版本 0.11.0 开始,HCatalog 随 Hive 一起安装和配置。 HCatalog 服务器与 Hive 元存储相同。有关 Metastore 配置属性,请参见Hive MetastoreManagement。对于 0.11.0 之前的 Hive 版本,请参阅 HCatalog 0.5.0 文档从 Tarball 安装中的“ Thrift 服务器设置”部分,以获取有关设置 Hive Metastore 配置属性的信息。

提交给 HCatalog 的作业可以指定配置属性,这些属性会影响作业期间的存储,容错和其他类型的行为。有关详情,请参见HCatalog 配置属性

WebHCat 配置属性

有关 WebHCat 的配置,请参见 WebHCat 手册中的Configuration Variables