问题描述

问题描述/异常栈

Hive分区表变更表元数据后,查询变更字段内容为Null

解决方案

Hive表级meta与分区级meta为各自独立管理,正常DDL语句仅操作表级meta,该修改如需对历史分区生效,需在正常DDL语句后添加关键字cascade;另外:如果该DDL语句未引起表级meta变更,则关键字cascade无效;

参考:
ALTER TABLE table_name [PARTITION partition_spec] CHANGE [COLUMN] col_old_name col_new_name column_type [COMMENT col_comment] [FIRST|AFTER column_name] [CASCADE|RESTRICT];

备注:
添加CASCADE关键字后,上面的命令会overwrite所有分区的meta信息,如果表的分区很多,会对Hive的元数据库MySQL造成大量的DDL,可能造成MySQL负载过高。因此默认值是RESTRICT

问题原因



作者:常惠渊