天天看点

在已有的hive表新增一列,但是已有分区数据显示为null一、造成hive查询为null的原因是?总结:

在已有的hive表新增一列,然后对新增列之前的分区写入数据,hive查询该列全是null,但presto查询是有数据的

  • 一、造成hive查询为null的原因是?
  • 总结:

一、造成hive查询为null的原因是?

原因是修改Hive分区表结构以后,元数据库中的SDS中该表对应的CD_ID会改变,但是该表分区下面对应的CD_ID还是原来表的CD_ID。SDS表主要保存文件存储的基本信息,如INPUT_FORMAT、OUTPUT_FORMAT、是否压缩等。

参考https://blog.csdn.net/gxd520/article/details/92791487?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1.not_use_machine_learn_pai&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1.not_use_machine_learn_pai

总结:

通常对已有的hive表增加一列,可以这样操作:

  1. 如果不需要补历史分区的数据,则可以直接新增一列
  2. 如果需要对新增列补历史分区数据,则建议将表数据备份,重建表结构,然后把数据导入到新表