zoukankan      html  css  js  c++  java
  • hive 外部表 内部表 添加新字段忘了加cascade 导致 旧分区的新字段数据为null问题解决

    -- 外部表的情况:
    --不管有没有加cascade字段,新写的分区数据中都会显示新加字段的值。
    --针对于旧分区,如果加了cascade,那么覆写旧分区的数据后,新字段可以直接select出来。
    -- 如果不加cascade,覆写旧分区的数据后,新字段仍然是null,
    -- 解决办法1:需要对以前的旧分区执行drop分区然后“add分区或者msck repair”后,才可以select出来。(推荐这种)
    -- 解决办法2:需要对以前的旧分区执行alter table tb_name partition (dt=...) add columns(new_field string)后,才可以select出来。(不推荐这种,因为,如果添加多个字段且都没有指定cascade,那么必须将所有字段都add columns操作,才能看到正确的数据。如果只添加某一个字段(比如最后一个字段),那么实际select出来后,显示出来的是按照desc table顺序的第一个新字段,这里比较迷惑人。所以还是不如第一种解决办法一步到位)

    -- 内部表的情况:
    --不管有没有加cascade字段,新写的分区数据中都会显示新加字段的值。
    --针对于旧分区,如果加了cascade,那么覆写旧分区的数据后,新字段可以直接select出来。
    -- 如果不加cascade,覆写旧分区的数据后,新字段仍然是null,
    -- 解决办法:需要对以前的旧分区执行alter table tb_name partition (dt=...) add columns(new_field string)后,才可以select出来。千万不能drop partition,因为是内部表,会直接删除数据的。

  • 相关阅读:
    小型的Unix系统字符SHELL
    小型的Unix系统字符SHELL
    string 大小写转换
    string 大小写转换
    string 大小写转换
    ACM 的中取模
    ACM 的中取模
    使用adb命令停止APP后台进程的方法
    how to use adb and gdbserver with VirtualBox
    CentOS的KVM实践(虚拟机创建、网桥配置、Spice)
  • 原文地址:https://www.cnblogs.com/cnblogszs/p/14320804.html
Copyright © 2011-2022 走看看