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]Hive分区表新增字段

[Hive]Hive分区表新增字段

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

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

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

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

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

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

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

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

hive修改表模式

hive用户可以通过alter语句更改table属性 Alter Partitions 增加partitions: ALTER TABLE table_name ADD [IF...
  • yfkiss
  • yfkiss
  • 2012年08月14日 09:20
  • 52659

hive-修改hive表字段的注释

修改hive表字段的注释修改之前hive> desc dw.fct_user_ctag_today; OK user_id int ...

Hive学习之修改表、分区、列

修改表的语句允许改变现有表的结构,通过该语句可以增加列/分区,修改SerDe,增加表和SerDe的属性或者重命名表。与之类似,修改分区的语句可以改变指定分区的属性。 重命名表 重命名表的语...

Hive分区表中 添加新字段,值为NULL 问题解决

Hive分区表中 添加字段,值为NULL 问题解决

hive中alter table的用法详解

ALTER TABLE 语句 2011-07-22 11:02 ALTER TABLE 语句用于在已有的表中添加、修改或删除列。 1 . ALTER TABLE tabl...
  • AnneQiQi
  • AnneQiQi
  • 2016年07月26日 15:07
  • 11524
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:HIVE 分区表添加字段后的奇怪现象
举报原因:
原因补充:

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