hive add columns后新插入列数据为空,但是用presto查询的时候却有数据

Posted 信小呆

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hive add columns后新插入列数据为空,但是用presto查询的时候却有数据相关的知识,希望对你有一定的参考价值。

hive在新加列(add columns)后,再load数据时,理论上来说新增的列如果有数据的话会展示出来;
解决办法:
方法一:重建分区
方法二:手动更新元数据
----在元数据库里执行如下语句
1、select CD_ID from SDS where LOCATION=‘hdfs://ods.db/tablename’; -------查找表对应的CD_ID
2、SELECT * FROM SDS WHERE LOCATION LIKE ‘hdfs://bidc/ods.db/tablname/pt=%’; --查找表总共有哪些分区
3、UPDATE SDS SET CD_ID=(查询1中的CD_ID的值) WHERE LOCATION LIKE ‘hdfs://bidc/ods.db/tablename/pt=%’; ----更新全部分区,如果要指定更新的分区,把%改为确切的分区值即可。
原因:
查看元数据时,发现表的元数据没有发生变化,没有新增加进这一列。
这个表是分区表,drop数据后分区还在,格式还在,add新字段后不更新源数据。presto查询使用元数据,所以能查出来数据。are you ok?

以上是关于hive add columns后新插入列数据为空,但是用presto查询的时候却有数据的主要内容,如果未能解决你的问题,请参考以下文章

pandas在dataframe数据列中插入全是全是固定数值或者固定文本内容的数据列(add a column to pandas dataframe with constant values)

在SQL SERVER 的表中,插入新的字段

当 add_column 使用默认选项并且没有 null:false 时是不是有可能插入 null

当尝试使用 JPA 将数据插入 MySQL 数据库时,我被抛出异常:列 'billing_address' 不能为空

如何将一列插入到两个现有列之间的数据集中?

首先来自数据库的代码 - 无法将值 NULL 插入列“Id”,但值实际上不为空