zoukankan      html  css  js  c++  java
  • hive表新增字段无法覆盖写入内容

    今天遇到hive表新增字段,以往建表都是建外表,直接drop后,重新创建。

    由于这次全部使用内表创建的,所以使用add column功能新增字段。

    alter table xy_dw.dw_transaction_eth add columns(type1 string comment '类型');

    但是发现,如果已经存在记录的情况下覆盖写入,新添加的字段任然为NUll。

    如果是新的记录,则可以写入。

    被坑了两天(我一直以为我程序哪里出问题了)终于发现了猫腻。

    注意:如果创建的是分区表,则在添加新字段时,必须要带上cascade,否则该字段无法进入数据。

    根本原因是元数据中带分区表的元数据和hive的实际存储不一致。

    alter table xy_dw.dw_transaction_eth add columns(type1 string comment '类型') cascade;

    如果已经添加了字段,没有带cascade怎么解决呢。

    我们可以修改字段,在修改字段名时带上,在修改回来。如下:

    alter table xy_dw.dw_transaction_eth change type1 type string comment '类型' cascade;
    alter table xy_dw.dw_transaction_eth change type type1 string comment '类型' cascade;

    可能使用msck repair table xy_dw.dw_transaction_eth; 也有可能修复,没测试过。

    作者:尤灯塔
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    Oracle数据库编程
    使用JDBC处理MySQL大文本和大数据
    phpcms之带图片的登录信息(带cookie版)(由于cookie和PHPCMS的原因,这个暂时无法使用,看新的)
    phpcms之调用导航栏
    phpcms之修改默认显示文字
    phpcms之创建自己的路径
    dedecms 动态tab写法
    关于dedecms的操作
    12/23
    12/21
  • 原文地址:https://www.cnblogs.com/30go/p/15133107.html
Copyright © 2011-2022 走看看