HIVE 分区表添加字段后的奇怪现象

原创 2013年12月04日 15:01:03

情况:

表: test_table

已有字段 (a,b,c)

已有分区:

day_key=20131201

day_key=20131202

day_key=20131203

 

需求是需要添加一个字段d

并且重新生成 所有分区的数据

 

步骤

1.添加字段:

alter table test_table add columns (d string);

2.执行语句

insert overwrite table test_table

select ....

 

此时问题产生了:

发现 新加的字段d 列 生成出来的数据

在已有的分区中

全是NULL

 

解决办法2个:

A.直接在hive里面解决

删除对应的分区 day_key=20131201

alter table test_table drop partition (day_key='20131201');

然后再次生成数据 发现d列的数据产生了。

 

B.修改元数据库

修改SDS表 老分区对应的 CD_ID

与表的 CD_ID 保持一致。

在元数据库查询:

select * from SDS where LOCATION like '%tb_name%'\G

我们可以看到  所有分区 以及表 对应的CD_ID 

如果我们对字段进行了修改

新生成分区的   CD_ID  的最新的 (与COLUMS表的一致)

而老分区 (不管你重新插入数据多少次) 都是与表(TBLS)的TBL_ID保持一致的!!

 

当我们重新计算数据之后 又不想重建分区

只需 :

update SDS set CD_ID=119 where SD_ID=116;

其中 119为其它新分区的 CD_ID  116 为表的TBL_ID

 

当然后面如果再次 add columns

也可以用同样的办法

update SDS set CD_ID=120 where SD_ID=119;

其中 120 为其它新分区的 CD_ID   119 为表之前过期的CD_ID

 

希望能帮助有同样问题的人。

 

 

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

hive分区表增加字段会导致新增字段无法显示值的BUG

对hive分区表新增字段后,在执行插入分区的动作,会发现其实数据文件中已经有新字段值了,但是在查询的时候新字段的值还是显示为null。 比如我们做一个简单的问题重现 我们先创建一个分区表xj_te...

[Hive]Hive分区表新增字段

[Hive]Hive分区表新增字段

hive——创建表不支持新增字段问题

创建hive表后,可能会遇到需要增加字段的情况,我们可能会想当然的像mysql或其他数据库那样,直接添加一个字段。 但对于hive,直接添加的字段可能并不能使用,比如可能会在添加字段后,在插入数据时,...

hive改表结构的两个坑

坑一:改变字段类型后更新数据不成功   关于hive插入数据的一个小坑,今天插入一个表中数据,插入时写的是常数,比如0.01 ,表中的字段也是DECIMAL(5,2)   按照常理插...

hive分区表增加字段新增字段值为空的bug

关键字: hive, partition, add column hive JIRA:https://issues.apache.org/jira/browse/HIVE-6131  最近在查hi...
  • dlg07
  • dlg07
  • 2015-11-20 15:01
  • 4018

hive新加入字段插入数据需要注意事项

hive中新加字段需要注意如下 1)如果表中有分区字段,必须先删除分区才能插入数据否则为null; 2)insert override TABLE table1 select counm1,cou...

hive中的增删改如何实现

由于 Hive 是针对数据仓库应用设计的,而数据仓库的内容是读多写少的。因此,Hive 中不支持对数据的改写和添加,所有的数据都是在加载的时候中确定好的。而数据库中的数据通常是需要经常进行修改的,因此...

hive从查询中获取数据插入到表或动态分区

转自:http://www.crazyant.net/1197.html Hive的insert语句能够从查询语句中获取数据,并同时将数据Load到目标表中。现在假定有一个已有数据的表stage...

hive基本用法汇总(部分)

看到的文章,总结的很好,转载一下:原文http://www.jiacheo.org/blog/126 1, 创建表 ? 1 2 3 4 ...
  • wf1982
  • wf1982
  • 2012-06-09 07:37
  • 15884

oozie执行时报错无法跟进FAILED

执行oozie时,会出现直接报出FAILED错误,而且不能跟进查看错误日志。如下图错误:                   通过查看oozie源码,可以发现core\src\main\java\or...
  • dlg07
  • dlg07
  • 2014-12-11 14:15
  • 3223
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)