此部分包含用于管理与 Hadoop 交互的函数。
Hadoop 函数
- 1: CLEAR_HDFS_CACHES
- 2: EXTERNAL_CONFIG_CHECK
- 3: GET_METADATA
- 4: HADOOP_IMPERSONATION_CONFIG_CHECK
- 5: HASH_EXTERNAL_TOKEN
- 6: HCATALOGCONNECTOR_CONFIG_CHECK
- 7: HDFS_CLUSTER_CONFIG_CHECK
- 8: KERBEROS_HDFS_CONFIG_CHECK
- 9: SYNC_WITH_HCATALOG_SCHEMA
- 10: SYNC_WITH_HCATALOG_SCHEMA_TABLE
- 11: VERIFY_HADOOP_CONF_DIR
1 - CLEAR_HDFS_CACHES
清除从 HDFS 复制的配置信息和任何缓存的连接。
此函数通过以下方式影响使用 hdfs
方案的读取:
-
此函数刷新从 Hadoop 复制的配置文件(例如 core-site.xml)加载的信息。这些文件位于 HadoopConfDir 配置参数设置的路径中。
-
此函数刷新有关在高可用性 (HA) Hadoop 群集中哪个 NameNode 处于活动状态的信息。因此,调用此函数后对 Hadoop 的第一次请求比预期的要慢。
Vertica 维护与 NameNode 的打开连接的缓存以减少延迟。此函数刷新该缓存。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变语法
CLEAR_HDFS_CACHES ( )
超级用户
示例
以下示例清除了 Hadoop 配置信息:
=> SELECT CLEAR_HDFS_CACHES();
CLEAR_HDFS_CACHES
--------------
Cleared
(1 row)
另请参阅
Hadoop 参数2 - EXTERNAL_CONFIG_CHECK
测试 Vertica 群集的 Hadoop 配置。该函数测试 HDFS 配置文件、HCatalog 连接器配置和 Kerberos 配置。
该函数调用以下函数:
- KERBEROS_CONFIG_CHECK
- HADOOP_IMPERSONATION_CONFIG_CHECK
- HDFS_CLUSTER_CONFIG_CHECK
- HCATALOGCONNECTOR_CONFIG_CHECK
如果使用一个实参调用此函数,它会将此实参传递给它调用的函数,这些函数也接受一个实参。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变语法
EXTERNAL_CONFIG_CHECK( ['what_to_test' ] )
参数
what_to_test
- 字符串,指定要测试的权限、名称服务和/或 HCatalog 架构。格式是“键=值”对的逗号分隔列表,其中键为 "authority"、"nameservice" 和 "schema"。值传递给所有子函数;有关如何解释值的详细信息,请参阅这些参考页面。
特权
此函数不需要权限。
示例
以下示例仅测试名为“ns1”的名称服务的配置。由于长度原因,输出已被忽略。
=> SELECT EXTERNAL_CONFIG_CHECK('nameservice=ns1');
3 - GET_METADATA
返回 Parquet 文件的元数据。元数据包括行组的数量和大小、列名以及有关块和压缩的信息。元数据以 JSON 形式返回。
此函数检查一个文件。Parquet 数据通常跨越单个目录中的多个文件;选择一个。该函数不接受目录名称作为实参。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变语法
GET_METADATA( 'filename' )
参数
filename
- Parquet 文件的名称。任何对 COPY 有效的路径都对该函数有效。此函数不对其他格式的文件进行操作。
特权
在 USER 可访问的存储位置上具有 READ 权限的超级用户或非超级用户(请参阅 GRANT(存储位置))。
示例
您必须使用单个文件而不是目录或 glob 调用此函数:
=> SELECT GET_METADATA('/data/emp-row.parquet');
GET_METADATA
----------------------------------------------------------------------------------------------------
schema:
required group field_id=-1 spark_schema {
optional int32 field_id=-1 employeeID;
optional group field_id=-1 personal {
optional binary field_id=-1 name (String);
optional group field_id=-1 address {
optional binary field_id=-1 street (String);
optional binary field_id=-1 city (String);
optional int32 field_id=-1 zipcode;
}
optional int32 field_id=-1 taxID;
}
optional binary field_id=-1 department (String);
}
data page version:
data page v1
metadata:
{
"FileName": "/data/emp-row.parquet",
"FileFormat": "Parquet",
"Version": "1.0",
"CreatedBy": "parquet-mr version 1.10.1 (build a89df8f9932b6ef6633d06069e50c9b7970bebd1)",
"TotalRows": "4",
"NumberOfRowGroups": "1",
"NumberOfRealColumns": "3",
"NumberOfColumns": "7",
"Columns": [
{ "Id": "0", "Name": "employeeID", "PhysicalType": "INT32", "ConvertedType": "NONE", "LogicalType": {"Type": "None"} },
{ "Id": "1", "Name": "personal.name", "PhysicalType": "BYTE_ARRAY", "ConvertedType": "UTF8", "LogicalType": {"Type": "String"} },
{ "Id": "2", "Name": "personal.address.street", "PhysicalType": "BYTE_ARRAY", "ConvertedType": "UTF8", "LogicalType": {"Type": "String"} },
{ "Id": "3", "Name": "personal.address.city", "PhysicalType": "BYTE_ARRAY", "ConvertedType": "UTF8", "LogicalType": {"Type": "String"} },
{ "Id": "4", "Name": "personal.address.zipcode", "PhysicalType": "INT32", "ConvertedType": "NONE", "LogicalType": {"Type": "None"} },
{ "Id": "5", "Name": "personal.taxID", "PhysicalType": "INT32", "ConvertedType": "NONE", "LogicalType": {"Type": "None"} },
{ "Id": "6", "Name": "department", "PhysicalType": "BYTE_ARRAY", "ConvertedType": "UTF8", "LogicalType": {"Type": "String"} }
],
"RowGroups": [
{
"Id": "0", "TotalBytes": "642", "TotalCompressedBytes": "0", "Rows": "4",
"ColumnChunks": [
{"Id": "0", "Values": "4", "StatsSet": "True", "Stats": {"NumNulls": "0", "DistinctValues": "0", "Max": "51513", "Min": "17103" },
"Compression": "SNAPPY", "Encodings": "PLAIN RLE BIT_PACKED ", "UncompressedSize": "67", "CompressedSize": "69" },
{"Id": "1", "Values": "4", "StatsSet": "True", "Stats": {"NumNulls": "0", "DistinctValues": "0", "Max": "Sheldon Cooper", "Min": "Howard Wolowitz" },
"Compression": "SNAPPY", "Encodings": "PLAIN RLE BIT_PACKED ", "UncompressedSize": "142", "CompressedSize": "145" },
{"Id": "2", "Values": "4", "StatsSet": "True", "Stats": {"NumNulls": "0", "DistinctValues": "0", "Max": "52 Broad St", "Min": "100 Main St Apt 4A" },
"Compression": "SNAPPY", "Encodings": "PLAIN RLE BIT_PACKED ", "UncompressedSize": "139", "CompressedSize": "123" },
{"Id": "3", "Values": "4", "StatsSet": "True", "Stats": {"NumNulls": "0", "DistinctValues": "0", "Max": "Pasadena", "Min": "Pasadena" },
"Compression": "SNAPPY", "Encodings": "RLE PLAIN_DICTIONARY BIT_PACKED ", "UncompressedSize": "95", "CompressedSize": "99" },
{"Id": "4", "Values": "4", "StatsSet": "True", "Stats": {"NumNulls": "0", "DistinctValues": "0", "Max": "91021", "Min": "91001" },
"Compression": "SNAPPY", "Encodings": "PLAIN RLE BIT_PACKED ", "UncompressedSize": "68", "CompressedSize": "70" },
{"Id": "5", "Values": "4", "StatsSet": "True", "Stats": {"NumNulls": "4", "DistinctValues": "0", "Max": "0", "Min": "0" },
"Compression": "SNAPPY", "Encodings": "PLAIN RLE BIT_PACKED ", "UncompressedSize": "28", "CompressedSize": "30" },
{"Id": "6", "Values": "4", "StatsSet": "True", "Stats": {"NumNulls": "0", "DistinctValues": "0", "Max": "Physics", "Min": "Astronomy" },
"Compression": "SNAPPY", "Encodings": "RLE PLAIN_DICTIONARY BIT_PACKED ", "UncompressedSize": "103", "CompressedSize": "107" }
]
}
]
}
(1 row)
4 - HADOOP_IMPERSONATION_CONFIG_CHECK
报告 Vertica 在访问 HDFS 中的 Kerberized 数据时将使用的委派令牌。HadoopImpersonationConfig 配置参数指定一个或多个权限、名称服务和 HCatalog 架构及其关联的令牌。对于每个测试值,该函数会报告 Vertica 将使用什么 doAs 用户或委派令牌进行访问。使用此函数确认您已按预期定义了您的委派令牌。
您可以使用实参调用此函数来指定要测试的权限、名称服务或 HCatalog 架构,或者不使用实参来测试所有配置的值。
此函数不检查您是否可以使用这些委派令牌访问 HDFS。
有关模拟的详细信息,请参阅 代理用户和委托令牌。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变语法
HADOOP_IMPERSONATION_CONFIG_CHECK( ['what_to_test' ] )
参数
what_to_test
- 字符串,指定要测试的权限、名称服务和/或 HCatalog 架构。例如,“nameservice=ns1”的值意味着该函数仅测试对名称服务“ns1”的访问,而忽略任何其他权限和架构。'nameservice=ns1, schema=hcat1' 的值表示该函数测试一个名称服务和一个 HCatalog 架构。
如果您不指定此实参,该函数将测试 HadoopImpersonationConfig 中定义的所有权限、名称服务和架构。
特权
此函数不需要权限。
示例
考虑 HadoopImpersonationConfig 的以下定义:
[{
"nameservice": "ns1",
"token": "RANDOM-TOKEN-STRING"
},
{
"nameservice": "*",
"doAs": "Paul"
},
{
"schema": "hcat1",
"doAs": "Fred"
}
]
以下查询仅测试“ns1”名称服务:
=> SELECT HADOOP_IMPERSONATION_CONFIG_CHECK('nameservice=ns1');
-- hadoop_impersonation_config_check --
Connections to nameservice [ns1] will use a delegation token with hash [b3dd9e71cd695d91]
出于安全原因,此函数返回令牌的哈希值。您可以使用预期值调用 HASH_EXTERNAL_TOKEN 并将该哈希值与此函数输出中的哈希值进行比较。
不带实参的查询会测试所有值:
=> SELECT HADOOP_IMPERSONATION_CONFIG_CHECK();
-- hadoop_impersonation_config_check --
Connections to nameservice [ns1] will use a delegation token with hash [b3dd9e71cd695d91]
JDBC connections for HCatalog schema [hcat1] will doAs [Fred]
[!] hadoop_impersonation_config_check : [PASS]
5 - HASH_EXTERNAL_TOKEN
返回字符串令牌的哈希值,用于 HADOOP_IMPERSONATION_CONFIG_CHECK。使用您希望 Vertica 使用的委派令牌调用 HASH_EXTERNAL_TOKEN
,并将其与 HADOOP_IMPERSONATION_CONFIG_CHECK
输出中的哈希值进行比较。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变语法
HASH_EXTERNAL_TOKEN( 'token' )
参数
token
- 指定要哈希的令牌的字符串。令牌在 HadoopImpersonationConfig 参数中配置。
特权
此函数不需要权限。
示例
以下查询测试 HADOOP_IMPERSONATION_CONFIG_CHECK 参考页面上示例中显示的预期值。
=> SELECT HASH_EXTERNAL_TOKEN('RANDOM-TOKEN-STRING');
hash_external_token
---------------------
b3dd9e71cd695d91
(1 row)
6 - HCATALOGCONNECTOR_CONFIG_CHECK
测试使用 HCatalog 连接器访问 Hive 数据的 Vertica 群集的配置。该函数首先验证 HCatalog 连接器是否已正确安装并报告几个相关配置参数的值。然后它使用 HiveServer2 测试连接。此函数不支持 WebHCat 服务器。
如果您指定 HCatalog 架构,并且您已为该架构定义了委派令牌,则此函数使用委派令牌。否则,该函数使用没有委派令牌的默认端点。
有关委派令牌的详细信息,请参阅代理用户和委托令牌。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变语法
HCATALOGCONNECTOR_CONFIG_CHECK( ['what_to_test' ] )
参数
what_to_test
- 字符串,指定要测试的 HCatalog 架构。例如,“schema=hcat1”的值意味着该函数仅测试“hcat1”架构并忽略找到的任何其他架构。
特权
此函数不需要权限。
示例
以下查询使用默认端点和无委派令牌进行测试。
=> SELECT HCATALOGCONNECTOR_CONFIG_CHECK();
-- hcatalogconnector_config_check --
HCatalogConnectorUseHiveServer2 : [1]
EnableHCatImpersonation : [1]
HCatalogConnectorUseORCReader : [1]
HCatalogConnectorUseParquetReader : [1]
HCatalogConnectorUseTxtReader : [0]
[INFO] Vertica is not configured to use its internal parsers for delimited files.
[INFO] This is off by default, but will be changed in a future release.
HCatalogConnectorUseLibHDFSPP : [1]
[OK] HCatalog connector library is properly installed.
[INFO] Creating JDBC connection as session user.
[OK] Successful JDBC connection to HiveServer2 as user [USER].
[!] hcatalogconnector_config_check : [PASS]
要使用配置的委派令牌进行测试,请将架构作为实参传递:
=> SELECT HCATALOGCONNECTOR_CONFIG_CHECK('schema=hcat1');
7 - HDFS_CLUSTER_CONFIG_CHECK
测试使用 HDFS 的 Vertica 群集的配置。该函数扫描在 HadoopConfDir 中找到的 Hadoop 配置文件,并对它找到的每个群集执行配置检查。如果您配置了多个群集,您可以指定测试哪一个而不是测试所有群集。
对于每个 Hadoop 群集,它报告的属性包括:
-
名称服务名称和关联的 NameNode
-
高可用性状态
-
RPC 加密状态
-
Kerberos 身份验证状态
-
HTTP(S) 状态
然后,它使用 http(s)
、hdfs
和 webhdfs
URL 方案测试连接。它使用 Vertica 和会话用户测试后两者。
有关配置文件和 HadoopConfDir 的信息,请参阅配置 HDFS 访问。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变语法
HDFS_CLUSTER_CONFIG_CHECK( ['what_to_test' ] )
参数
what_to_test
- 字符串,指定要测试的权限或名称服务。例如,“nameservice=ns1”的值表示该函数仅测试“ns1”群集。如果您同时指定了权限和名称服务,则权限必须是指定名称服务中的 NameNode 才能通过检查。
如果您不指定此实参,该函数将测试在 HadoopConfDir 中找到的所有群集配置。
特权
此函数不需要权限。
示例
以下示例测试所有群集。
=> SELECT HDFS_CLUSTER_CONFIG_CHECK();
-- hdfs_cluster_config_check --
Hadoop Conf Path : [/conf/hadoop_conf]
[OK] HadoopConfDir verified on all nodes
Connection Timeout (seconds) : [60]
Token Refresh Frequency (seconds) : [0]
HadoopFSBlockSizeBytes (MiB) : [64]
[OK] Found [1] hadoop cluster configurations
------------- Cluster 1 -------------
Is DefaultFS : [true]
Nameservice : [vmns]
Namenodes : [node1.example.com:8020, node2.example.com:8020]
High Availability : [true]
RPC Encryption : [false]
Kerberos Authentication : [true]
HTTPS Only : [false]
[INFO] Checking connections to [hdfs:///]
vertica : [OK]
dbuser : [OK]
[INFO] Checking connections to [http://node1.example.com:50070]
[INFO] Node is in standby
[INFO] Checking connections to [http://node2.example.com:50070]
[OK] Can make authenticated external curl connection
[INFO] Checking webhdfs
vertica : [OK]
USER : [OK]
[!] hdfs_cluster_config_check : [PASS]
8 - KERBEROS_HDFS_CONFIG_CHECK
已弃用
此函数已弃用,并将在未来版本中移除。请改用 EXTERNAL_CONFIG_CHECK。测试使用 HDFS 的 Vertica 群集的 Kerberos 配置。如果该函数可以同时使用 Vertica keytab 文件和会话用户访问 HDFS,则该函数成功,否则报告错误。该函数是 KERBEROS_CONFIG_CHECK 的一个更具体的版本。
如果当前会话没有 Kerberos 化,该函数将不能使用安全的 HDFS 连接并且会失败。
您可以使用实参调用此函数来指定要测试的 HDFS 配置,也可以不使用实参。如果你不使用实参调用此函数,该函数会读取 HDFS 配置文件,如果没有找到它们就会失败。请参阅配置 HDFS 访问。如果它找到配置文件,它会测试所有配置的名称服务。
该函数按顺序执行以下测试:
-
是否提供 Kerberos 服务?
-
是否存在 keytab 文件,是否在数据库中设置了 Kerberos 和 HDFS 配置参数?
-
Vertica 是否可以读取并使用密钥调用 kinit 以向 HDFS 进行身份验证并获取数据库 Kerberos 票证?
-
Vertica 能否同时使用数据库 Kerberos 票证和当前会话的用户可转发票证来执行
hdfs
和webhdfs
操作? -
Vertica 是否可以连接到 HiveServer2?(此函数不支持 WebHCat。)
如果任何测试失败,该函数将返回描述性错误消息。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变语法
KERBEROS_HDFS_CONFIG_CHECK( ['hdfsHost:hdfsPort',
'webhdfsHost:webhdfsPort', 'webhcatHost' ] )
参数
hdfsHost, hdfsPort
- HDFS NameNode 的主机名或 IP 地址和端口。Vertica 使用此服务器访问通过
hdfs
URL 指定的数据。如果值为 ' ',则函数跳过这部分检查。 webhdfsHost, webhdfsPort
- WebHDFS 服务器的主机名或 IP 地址和端口。Vertica 使用此服务器访问通过
webhdfs
URL 指定的数据。如果值为 ' ',则函数跳过这部分检查。 - webhcatHost
- 在此位置传递任何值。WebHCat 已弃用,此值被忽略但必须存在。
特权
此函数不需要权限。
9 - SYNC_WITH_HCATALOG_SCHEMA
将通过 HCatalog 连接器可用的 Hive 数据库架构的结构复制到 Vertica 架构。如果 HCatalog 架构和目标 Vertica 架构具有匹配的表名,SYNC_WITH_HCATALOG_SCHEMA 将覆盖 Vertica 表。
该函数可以直接同步 HCatalog 架构。在这种情况下,对 vertica_schema 和 hcatalog_schema 参数使用相同的架构名称调用该函数。该函数还可以将不同的架构同步到 HCatalog 架构。
如果更改 HCatalog 连接器配置参数的设置,必须再次调用该函数。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变语法
SYNC_WITH_HCATALOG_SCHEMA( vertica_schema, hcatalog_schema, [drop_non_existent] )
参数
-
vertica_schema
- 用于存储复制的 HCatalog 架构元数据的目标 Vertica 架构。这可以是与 hcatalog_schema 相同的架构,也可以是使用 CREATE SCHEMA 创建的单独架构。
当心
请勿使用 Vertica 架构来存储其他数据。 -
hcatalog_schema
- 要复制的 HCatalog 架构,使用 CREATE HCATALOG SCHEMA
- 创建drop_non_existent
- 如果
true
,请删除 vertica_schema 中与 hcatalog_schema 中的表不对应的任何表
特权
非超级用户: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 同步名为 hcat 的 HCatalog 架构:
=> CREATE HCATALOG SCHEMA hcat WITH hostname='hcathost' HCATALOG_SCHEMA='default'
HCATALOG_USER='hcatuser';
CREATE SCHEMA
=> SELECT sync_with_hcatalog_schema('hcat', 'hcat');
sync_with_hcatalog_schema
----------------------------------------
Schema hcat synchronized with hcat
tables in hcat = 56
tables altered in hcat = 0
tables created in hcat = 56
stale tables in hcat = 0
table changes erred in hcat = 0
(1 row)
=> -- Use vsql's \d command to describe a table in the synced schema
=> \d hcat.messages
List of Fields by Tables
Schema | Table | Column | Type | Size | Default | Not Null | Primary Key | Foreign Key
-----------+----------+---------+----------------+-------+---------+----------+-------------+-------------
hcat | messages | id | int | 8 | | f | f |
hcat | messages | userid | varchar(65000) | 65000 | | f | f |
hcat | messages | "time" | varchar(65000) | 65000 | | f | f |
hcat | messages | message | varchar(65000) | 65000 | | f | f |
(4 rows)
以下示例使用 SYNC_WITH_HCATALOG_SCHEMA 后跟 ALTER TABLE 来调整列值:
=> CREATE HCATALOG SCHEMA hcat WITH hostname='hcathost' HCATALOG_SCHEMA='default'
-> HCATALOG_USER='hcatuser';
CREATE SCHEMA
=> SELECT sync_with_hcatalog_schema('hcat', 'hcat');
...
=> ALTER TABLE hcat.t ALTER COLUMN a1 SET DATA TYPE long varchar(1000000);
=> ALTER TABLE hcat.t ALTER COLUMN a2 SET DATA TYPE long varbinary(1000000);
以下示例使用带本地(非 HCatalog)架构的 SYNC_WITH_HCATALOG_SCHEMA:
=> CREATE HCATALOG SCHEMA hcat WITH hostname='hcathost' HCATALOG_SCHEMA='default'
-> HCATALOG_USER='hcatuser';
CREATE SCHEMA
=> CREATE SCHEMA hcat_local;
CREATE SCHEMA
=> SELECT sync_with_hcatalog_schema('hcat_local', 'hcat');
10 - 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)
11 - VERIFY_HADOOP_CONF_DIR
验证用于访问 HDFS 的 Hadoop 配置在所有 Vertica 节点上是否有效。配置在以下情况下有效:
-
所有必需的配置文件位于 HadoopConfDir 配置参数定义的路径中
-
Vertica 所需的所有属性都在这些文件中设置
此函数不会尝试验证这些属性的设置;它仅验证它们是否具有值。
Hadoop 配置可能在某些节点上有效而在其他节点上无效。如果值在任何节点上无效,该函数将报告验证失败;输出的其余部分报告详细信息。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变语法
VERIFY_HADOOP_CONF_DIR( )
参数
此函数没有参数。
特权
此函数不需要权限。
示例
以下示例显示了 Hadoop 配置有效时的结果。
=> SELECT VERIFY_HADOOP_CONF_DIR();
verify_hadoop_conf_dir
-------------------------------------------------------------------
Validation Success
v_vmart_node0001: HadoopConfDir [PG_TESTOUT/config] is valid
v_vmart_node0002: HadoopConfDir [PG_TESTOUT/config] is valid
v_vmart_node0003: HadoopConfDir [PG_TESTOUT/config] is valid
v_vmart_node0004: HadoopConfDir [PG_TESTOUT/config] is valid
(1 row)
在以下示例中,Hadoop 配置在一个节点上有效,但在其他节点上缺少所需的值。
=> SELECT VERIFY_HADOOP_CONF_DIR();
verify_hadoop_conf_dir
-------------------------------------------------------------------
Validation Failure
v_vmart_node0001: HadoopConfDir [PG_TESTOUT/test_configs/config] is valid
v_vmart_node0002: No fs.defaultFS parameter found in config files in [PG_TESTOUT/config]
v_vmart_node0003: No fs.defaultFS parameter found in config files in [PG_TESTOUT/config]
v_vmart_node0004: No fs.defaultFS parameter found in config files in [PG_TESTOUT/config]
(1 row)