SYNC_WITH_HCATALOG_SCHEMA_TABLE
将通过 HCatalog 连接器可用的 Hive 数据库架构中的单个表结构复制到 Vertica 表。
该函数可以直接同步 HCatalog 架构。在这种情况下,对 vertica_schema 和 hcatalog_schema 参数使用相同的架构名称调用该函数。该函数还可以将不同的架构同步到 HCatalog 架构。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变语法
SYNC_WITH_HCATALOG_SCHEMA_TABLE( vertica_schema, hcatalog_schema, table_name )
参数
-
vertica_schema
- 用于存储复制的 HCatalog 架构元数据的现有 Vertica 架构。这可以是与 hcatalog_schema 相同的架构,也可以是使用 CREATE SCHEMA 创建的单独架构。
-
hcatalog_schema
- 要复制的 HCatalog 架构,使用 CREATE HCATALOG SCHEMA 创建。
-
table_name
- hcatalog_schema 中要复制的表。如果 vertica_schema 中已经存在 table_name,该函数将会覆盖它。
特权
非超级用户:vertica_schema 上的 CREATE 权限。
用户还需要 Hive 数据的以下访问权限之一:
-
hcat_schema 的使用权限(如果 Hive 不使用授权服务来管理访问权限)。
-
通过授权服务(Sentry 或 Ranger)进行管理的权限,以及 HDFS 中的底层文件的访问权限。(Sentry 可以通过 ACL 同步提供该访问权限。)
-
dbadmin 用户权限(有/无授权服务)。
数据类型匹配
在 Vertica 中,Hive STRING 和 BINARY 数据类型与 VARCHAR(65000) 和 VARBINARY(65000) 类型相匹配。创建架构后,根据需要使用 ALTER TABLE调整数据类型。Vertica 中的 VARCHAR 或 VARBINARY 的最大大小为 65000,但您可以使用 LONG VARCHAR 和 LONG VARBINARY 指定更大的值。
Hive 和 Vertica 以不同的方式定义字符串长度。在 Hive 中,长度是指字符的数量;在 Vertica 中,长度是指字节的数量。因此,使用多个字节的字符编码(例如 Unicode)可能会导致两者之间不匹配。为避免数据截断,请根据字节而不是字符设置 Vertica 中的值。
如果数据大小超出列大小,Vertica 将在读取时间在 QUERY_EVENTS 系统表中记录一个事件。
示例
以下示例使用 SYNC_WITH_HCATALOG_SCHEMA_TABLE 来同步 "nation" 表:
=> CREATE SCHEMA 'hcat_local';
CREATE SCHEMA
=> CREATE HCATALOG SCHEMA hcat WITH hostname='hcathost' HCATALOG_SCHEMA='hcat'
HCATALOG_USER='hcatuser';
CREATE SCHEMA
=> SELECT sync_with_hcatalog_schema_table('hcat_local', 'hcat', 'nation');
sync_with_hcatalog_schema_table
-----------------------------------------------------------------------------
Schema hcat_local synchronized with hcat for table nation
table nation is created in schema hcat_local
(1 row)
以下示例显示本地架构中已存在 "nation" 表时的行为:
=> SELECT sync_with_hcatalog_schema_table('hcat_local','hcat','nation');
sync_with_hcatalog_schema_table
-----------------------------------------------------------------------------
Schema hcat_local synchronized with hcat for table nation
table nation is altered in schema hcat_local
(1 row)