前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >hive 分区表添加字段后,字段结果为null

hive 分区表添加字段后,字段结果为null

原创
作者头像
王旭平
发布2022-12-12 21:30:19
2.4K0
发布2022-12-12 21:30:19
举报
文章被收录于专栏:大数据生态大数据生态

问题现象

由于业务需要,添加了在hive原来的表上增加了新字段(alter table partition_test add columns(ads string); ),添加一段时间后发现,新分区的数据查询正常。但是发现涉及以前的分区,新增字段的值都是null。

开始的时候,以为是老分区文件中没有该字段的值导致的,重新跑批生成数据,发现老分区中的字段还是为null。

查看表结构,发现也是有新添加的字段,也就是表的元数据中有新增字段。

问题原因

新增字段后,之前的分区没有同步到新的字段结构,使用的还是之前的元数据信息。而新生成的分区使用的新字段结构的元数据。hive在select分区表的数据时,会根据分区元数据字段去hdfs文件中读取对应字段值。而老分区中没有新字段的元数据,所以没有取到相关值,显示为null 。

解决方案

同步老分区的元数据字段结构。

参考命令:

代码语言:javascript
复制
alter table partition_test partition(dt='a') add columns(ads string);

同步老分区的元数据后,即可查询到。

后续添加字段的时候,命令里面加cascade就行了,例如:alter table partition_test add columns(col1 string) cascade 。就能同步老分区的字段了。该问题就是hive的联级问题。

参考:

https://cwiki.apache.org/confluence/display/hive/languagemanual+ddl

https://blog.csdn.net/mhtian2015/article/details/80855858

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问题现象
  • 问题原因
  • 解决方案
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com