HCatalog 配置属性

可以使用提交给作业的作业中指定的一些配置参数来修改 Apache HCatalog 的行为。本文档详细介绍了用户可以使用的所有各种旋钮,以及它们所完成的工作。

Setup

此页面中描述的属性是通过传递给它的 jobConf 在 HCatalog 上设置的作业级属性。这意味着此页面与HCatLoader/HCatStorer的 Pig 用户或HCatInputFormat/HCatOutputFormat的 MapReduce 用户相关。对于 HCatalog 的 MapReduce 用户,这些必须作为键值存在于用于实例化 HCatOutputFormat 或 HCatInputFormat 的配置(JobConf/Job/JobContext)中。对于 HCatStorer 的 Pig 用户,在实例化 HCatLoader/HCatStorer 之前,使用 Pig“ set”命令设置这些参数。

Storage Directives

PropertyDefaultDescription
hcat.pig.storer.external.locationnot set一个重写,用于指定 HCatStorer 将写入的位置(由 Pig 作业直接定义),可以由用户直接使用,也可以使用 org.apache.hive.hcatalog.pig.HCatStorerWrapper。 HCatalog 将写入此指定目录,而不是写入由元数据计算的表或分区目录。如果这是表级别的写操作(未分区表写操作),它将代替表目录;如果是分区级别的写写,则将使用分区目录来代替。此参数仅用于具有多个写入目标的非动态分区作业。
hcat.dynamic.partitioning.custom.patternnot set对于动态分区作业,仅指定自定义目录是不够的,因为该作业将写入多个目标,因此,除了目录说明以外,它还需要模式说明。这就是该参数的 Importing 位置。例如,给定一个由国家/地区和国家/地区键分区的表,其根目录位置为/ apps/hive/warehouse/geo /,则将动态分区写入该表中,以写入分区(国家/地区= US,state = CA)和(country = IN,state = KA)将创建两个目录:/ apps/hive/warehouse/geo/country = US/state = CA /和/ apps/hive/warehouse/geo/country = IN /状态= KA /。但是,指定 hcat.dynamic.partitioning.custom.pattern =“/ext/geo/${country}-${state}”将创建以下两个分区目录:/ ext/geo/US-CA 和/ ext/geo/IN -K A。因此,它允许用户为所有写入指定自定义目录位置模式,并在尝试为分区创建目标位置时内插它看到的每个变量。另请参见动态分区:外部表
hcat.append.limit

(Hive 0.15.0 及更高版本)
未设置hcat.append.limit 允许 HCatalog 用户指定自定义附加限制。默认情况下,在附加到现有目录时,HCatalog 将尝试避免命名冲突,并尝试将_a_NNN(其中* NNN 是数字)附加到所需的文件名中以避免冲突。但是,默认情况下,它只会在放弃之前尝试从 0 到 999 的 NNN *。对于某些文件数量过多的表,这可能会导致问题。理想情况下,应通过用户更改使用方式并进行某种压缩来解决此问题。但是,设置此参数可用作增加该限制的临时解决方案。 (已在 Hive 0.15.0 中使用HIVE-9381添加。)
hcat.input.ignore.invalid.pathfalsehcat.input.ignore.invalid.path 允许 HCatalog 用户指定在尝试获取无效 Importing 的拆分时是否忽略该路径并为其返回空结果路径。默认值为 false,如果 Importing 路径无效,则用户将收到 InvalidInputException。 (已在 Hive 2.1.0 中添加HIVE-13509。)

缓存行为指令

HCatalog 维护 HiveClients 的缓存以与 Metastore 进行对话,并 Management 每个线程 1 个 Metastore Client 的缓存,默认期限为 120 秒。对于希望修改此缓存行为的人员,提供了一些参数:

PropertyDefaultDescription
hcatalog.hive.client.cache.expiry.time120允许用户覆盖指定的到期时间-这是一个整数,并指定直到缓存条目到期的秒数。
hcatalog.hive.client.cache.disabledfalse人们可以根据需要完全禁用缓存。这在高度多线程的用例中很有用。

注意:以上两个属性以“ hcatalog”开头。而不是“ hcat”。

Importing 拆分生成行为

PropertyDefaultDescription
hcat.desired.partition.num.splitsnot set这是一个提示/指南,可以提供给 HCatalog 以传递到基础 InputFormats,以对每个分区产生“期望的”分割数。这对于通过增加几个大文件上生成的分割数来增加并行度很有用。在我们希望减少大量文件的分割数量的情况下,它没有什么用处。在此作业将读取大量分区的情况下,它根本没有用。还要注意,这只是一个优化提示,不能保证基础层将能够使用此优化。此外,MapReduce 参数 mapred.min.split.size 和 mapred.max.split.size 可以与此参数结合使用,以调整或优化作业。

数据促销行为

在某些情况下(例如某些较旧的 Pig 版本),HCatalog 的用户可能不支持 Hive 支持的所有数据类型。提供了一些配置参数来处理数据升级和转换,使它们可以通过 HCatalog 读取数据。在写方面,期望用户传递具有与模式匹配的有效数据类型的 HCatRecords。

PropertyDefaultDescription
hcat.data.convert.boolean.to.integerfalse从 HCatalog 读取时将布尔值提升为 int
hcat.data.tiny.small.int.promotionfalse从 HCatalog 读取时将 tinyint 或 smallint 提升为 int

HCatRecordReader 的容错行为

读取时,数据可能包含错误是可以理解的,但是由于几个错误,我们可能不想完全中止任务。这些参数配置了 HCatalog 在任务失败之前可以接受的错误数量。

PropertyDefaultDescription
hcat.input.bad.record.threshold0.0001f浮点参数的默认值为 0.0001f,这意味着它可以每 10,000 行处理 1 个错误,但仍然不会出错。更大,它将。
hcat.input.bad.record.min2int 参数默认为 2,这是应用 hcat.input.bad.record.threshold 参数之前遇到的最少错误记录数。这是为了防止由于错误率过高而导致初始或早期不良记录导致任务中止。

Navigation Links

Previous: 从 Tarball 安装
Next: 加载和存储接口

一般:HCatalog ManualWebHCat ManualHive Wiki 主页Hive 项目 site