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,因为是内部表,会直接删除数据的。

  • 相关阅读:
    关于AES加密,以及各种分组加密
    MakeFile文件是什么——内容、工作原理、作用、使用
    Nachos java版学习(二)
    Nachos java版学习(一)
    LinkedList的基本用法
    Java线程状态的改变
    线程详解
    为什么打开fiddler电脑就不能上网,关了就能正常打开了呢?
    猫和路由器的区别
    python入门学习1
  • 原文地址:https://www.cnblogs.com/cnblogszs/p/14320804.html
Copyright © 2011-2022 走看看