Hive 添加配置单元分区时如何验证列?

Hive 添加配置单元分区时如何验证列?,hive,parquet,Hive,Parquet,我创建了一个配置单元表,如下所示: 创建外部表test\u db.test( 区域字符串, 开始日期字符串 ) 被分割( id字符串 ) 作为拼花地板储存。 我有一个脚本来添加拼花地板文件,如下所示: ALTER TABLE test_db.test 添加不存在的分区( id='abc' ) 位置“s3://LOCATION/to/file” 此脚本接受拼花文件位置的用户输入。我想确保拼花文件列与表列匹配,但addpartition语句似乎总是有效的,即使列是错误的。如何让配置单元验证添

我创建了一个配置单元表,如下所示:

创建外部表test\u db.test(
区域字符串,
开始日期字符串
)
被分割(
id字符串
)
作为拼花地板储存。

我有一个脚本来添加拼花地板文件,如下所示:


ALTER TABLE test_db.test
添加不存在的分区(
id='abc'
)
位置“s3://LOCATION/to/file”


此脚本接受拼花文件位置的用户输入。我想确保拼花文件列与表列匹配,但addpartition语句似乎总是有效的,即使列是错误的。如何让配置单元验证添加时的列?

配置单元是
读取模式
。当您添加带有数据文件位置的分区时,Hive只是在其元存储中注册它。此时未对实际数据执行架构检查。这与传统关系数据库不同,传统关系数据库在写入时强制执行
模式。实际读取数据时,配置单元将根据表定义为基础数据分配一个架构

拼花工具

为了验证
parquet
文件,您可以利用。此实用程序可用于检查
parquet
文件中的模式。您可以在脚本中包含此步骤,并且仅当
parquet
文件架构与
Hive
表定义匹配时,才添加分区

下面是版本1.6.0的示例用法:

a。下载JAR:

b。检查模式

hadoop jar parquet-tools-1.6.0.jar schema /hdfs/path/to/file.parquet