概述

要使用 HCatalog 连接器,您必须了解几个 Hadoop 组件:

  • Apache Hive 允许您按照与查询关系数据库中所存数据相同的方式,查询 Hadoop 分布式文件系统 (HDFS) 中存储的数据。Hive 在后台使用一组序列化程序和反序列化程序 (SerDe) 类,从 HDFS 中存储的文件中提取数据并将其分解成列和行。每个 SerDe 均以特定的格式处理数据文件。例如,一个 SerDe 从以逗号分隔的数据文件中提取数据,另一个 SerDe 则可解释以 JSON 格式存储的数据。

  • Apache HCatalog 是 Hadoop 生态系统的一个组件,可向其他 Hadoop 组件(如 Pig)提供 Hive 元数据。

  • HiveServer2 通过 JDBC 使 HCatalog 和 Hive 数据可用。通过它,客户端可以请求检索 Hive 中存储的数据以及有关 Hive 架构的信息。HiveServer2 可以使用授权服务(Sentry 或 Ranger)。HiverServer2 可以使用 Hive LLAP (Live Long And Process)。

Vertica HCatalog 连接器让您可以透明地访问可通过 HiveServer2 获得的数据。您可以使用该连接器来定义 Vertica 中与 Hive 数据库或架构相对应的架构。当您在此架构内查询数据时,HCatalog 连接器可以透明地从 Hadoop 中提取数据,并将该数据格式化为表格数据。Vertica 支持授权服务和 Hive LLAP。

HCatalog 连接功能

HCatalog 连接器允许您使用 Vertica 原生 SQL 语法查询 Hive 中存储的数据。其部分主要特性有:

  • HCatalog 连接器始终反映 Hive 中存储的数据的当前状态。

  • HCatalog 连接器利用 Vertica 和 Hadoop 的并行特性来处理 Hive 数据。其结果是,通过 HCatalog 连接器查询数据通常比直接通过 Hive 查询数据速度更快。

  • 由于 Vertica 执行数据的提取和解析,HCatalog 连接器不会明显增加 Hadoop 群集上的负载。

  • 您可以像使用原生 Vertica 数据那样,使用通过 HCatalog 连接器查询的数据。例如,您可以执行能够联接 HCatalog 架构中的表数据与本地表数据的查询。

HCatalog 连接器注意事项

使用 HCatalog 连接器时,要牢记以下几点:

  • Hive 的数据存储在分布式文件系统中的平面文件内,每次查询 Hive 数据都必须对其进行读取和反序列化。这种反序列化会导致 Hive 的性能远慢于 Vertica。要读取数据,HCatalog 连接器必须执行与 Hive 相同的流程。因此,使用 HCatalog 连接器查询 Hive 中存储的数据比查询本地 Vertica 表要慢得多。如果需要对 Hive 中存储的数据执行广泛的分析,您应该考虑将其加载到 Vertica 中。Vertica 优化后,通过 HCatalog 连接器查询数据通常比直接通过 Hive 查询数据更快。

  • 如果 Hive 使用 Kerberos 安全性,则 HCatalog 连接器默认在查询中使用查询用户的凭据。如果 Hive 使用 Sentry 或 Ranger 来强制实施安全性,则您必须通过将 EnableHCatImpersonation 设置为 0 在 Vertica 中禁用这种查询行为,或者授予用户对 HDFS 中基础数据的访问权限。(Sentry 支持 ACL 同步自动授予访问权限。)或者,您可以为数据和元数据访问指定委托令牌。请参阅配置安全性

  • Hive 支持 Vertica 不支持的复杂数据类型,如 list、map 和 struct。包含这些数据类型的列将转换成以 JSON 表示的数据类型,并存储为 VARCHAR。请参阅从 Hive 到 Vertica 的数据类型转换