hive分区表加字段后insert字段为空

hive分区表加字段insert字段为空

原因

哈喽朋友们,昨天又在生产环境遇到一个分区表加字段后,insert 进去字段为空的问题。原因是要在分区表中加字段,一般为了不影响历史数据都通过alter table table_name add columns 加字段,环境依旧是华为云DataArts。

现象

字段加完以后,运行完etl之后,查询发现对应字段竟然都是空的!

赶紧查下select 有没有问题。

代码完全没问题,那问题就出在元数据上。通过show create table table_name 发现字段都add上去在最后呀,为啥?

即便是MSCK repair table table_name 修复元数据也没有用。

表存储格式是PARQUET‌列式存储。

解决方案

加字段时加上一个关键字:CASCADE

这样加上去的字段能够在历史分区上都生效,不然新加的字段只会在新的分区上生效。

sql 复制代码
ALTER TABLE table_name ADD COLUMNS (fk_sbt_spu bigint COMMENT '销售产品id') 
改成 
ALTER TABLE table_name ADD COLUMNS (fk_sbt_spu bigint COMMENT '销售产品id') CASCADE

另外,如果字段已经通过不带CASCADE关键字的add语句加到了分区表上面,咋整?

①通过ALTER TABLE table_name replace columns(保留一个历史字段) CASCADE 把表结构元数据刷掉;

②再ALTER TABLE table_name replace columns(所有最新字段) CASCADE 刷新整个分区表的元数据(含历史分区);

③再执行etl进行数据插入,历史分区新增字段就有数据了。这样就不用重建表了。

最后再跑下select 分区表,结果和第二张图一样,搞定!

相关推荐
迈巴赫车主12 小时前
湖仓一体(Data Lakehouse)简介
大数据·数据仓库·数据湖·湖仓一体
liuxiaowei315 小时前
Winform+WPF双框架实战:喷涂工艺SCADA上位机从0到1搭建(附采集监控源码+车间踩坑实录)
大数据·hadoop·wpf
humbinal2 天前
同时支持 gui & cli 的 parquet 文件查看工具,高性能小清新!
hive·python·rust·spark·开源·github·parquet
RestCloud3 天前
ETL是什么?全域数据集成平台核心能力解析
数据仓库·etl·数据清洗·数据处理·etlcloud·数据集成工具
Gent_倪3 天前
万字详解:数据库、数据仓库、数据湖、湖仓一体
数据库·数据仓库·spark
Microsoft Word4 天前
把RAG从 “能跑” 做到上线
数据仓库·人工智能
hkNaruto4 天前
【大数据】《传统Hadoop大数据技术入门:补充与进阶——从数据格式到智能决策的问答实录》
大数据·hadoop·分布式
吾AI科技4 天前
基于Tez引擎的 Hive SQL 性能优化
大数据·hive·性能优化·tez
Database_Cool_4 天前
数据仓库弹性扩缩容怎么实现?AnalyticDB MySQL 在线扩容 0 中断实战
数据库·数据仓库·mysql·阿里云
牛奶咖啡134 天前
大数据Hadoop运维应用实践——双NameNode高可用Hadoop集群架构(下)
大数据·hadoop·hadoop集群配置文件解析·hadoop高可用集群安装部署·配置指定多台服务器相互免密·配置hadoop服务开机自启·ansible部署hadoop