ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

hive表新增字段无法覆盖写入内容

2021-08-12 16:02:25  阅读:289  来源: 互联网

标签:transaction 覆盖 写入 hive cascade xy table dw eth


今天遇到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; 也有可能修复,没测试过。

 

标签:transaction,覆盖,写入,hive,cascade,xy,table,dw,eth
来源: https://www.cnblogs.com/30go/p/15133107.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有