热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Hive增加列结果为NULL

Hive增加列结果为NULL1.问题描述hive表使用ALTERTABLEsearch_index.middle_model_wareADDCOLUMNS(feature_v3ST
Hive增加列结果为NULL

1. 问题描述

hive表使用

ALTER TABLE search_index.middle_model_ware ADD COLUMNS (feature_v3 STRING COMMENT 'idx_64:')

命令新增一列,然后insert overwrite table到一个历史存在的dt,再次select新增字段时,结果都是null,当insert到一个不存在的分区时,select新增字段是有结果的。

2.原因分析

从wiki上看,alter table有以下注解。

The CASCADE|RESTRICT clause is available in Hive 0.15.0.
ALTER TABLE CHANGE COLUMN with CASCADE command changes the columns of a table's metadata
,and cascades the same change to all the partition metadata.
RESTRICT is the default, limiting column change only to table metadata.

alter table默认的选项是RESTRICT,RESTRICT只会改变原始数据,在执行alter table之前就存在的分区,表结构不会改变,CASCADE选项则会改变已经存在的分区的结构,新增列的数据会可以select出来了。

ALTER TABLE search_index.middle_model_ware ADD COLUMNS (feature_v3 STRING COMMENT 'idx_64:') cascade;

如果历史partition特别多的话,加上了cascade选项后,执行起来会非常慢,因为需要更新每个partition

3.参考文献

wiki

blog


推荐阅读
author-avatar
大华出入境
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有