美文网首页
Hive增加列结果为NULL

Hive增加列结果为NULL

作者: 哟嚯嚯嚯嚯 | 来源:发表于2018-10-08 18:52 被阅读0次

    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

    相关文章

      网友评论

          本文标题:Hive增加列结果为NULL

          本文链接:https://www.haomeiwen.com/subject/tkwjaftx.html