021.hivehive修改分区表的列(添加列)但是查询数据为null,修改分区表导致元数据CD_ID发生改变,需要更新分区信息

问题

修改分区表的列(添加列)但是查询数据为null

原因

修改分区表导致分区字段元数据出问题,需要更新分区信息

 解决方法1:修改元数据  

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%20%E2%80%94%E2%80%94%E2%80%94%E2%80%94%E2%80%94%E2%80%94%E2%80%94%E2%80%94%E2%80%94%E2%80%94%E2%80%94%E2%80%94%E2%80%94%E2%80%94%E2%80%94%E2%80%94%20%E7%89%88%E6%9D%83%E5%A3%B0%E6%98%8E%EF%BC%9A%E6%9C%AC%E6%96%87%E4%B8%BACSDN%E5%8D%9A%E4%B8%BB%E3%80%8C%E6%98%A5%E9%A3%8E%E5%8C%96%E9%9B%A8~_~%E3%80%8D%E7%9A%84%E5%8E%9F%E5%88%9B%E6%96%87%E7%AB%A0%EF%BC%8C%E9%81%B5%E5%BE%AACC%204.0%20BY-SA%E7%89%88%E6%9D%83%E5%8D%8F%E8%AE%AE%EF%BC%8C%E8%BD%AC%E8%BD%BD%E8%AF%B7%E9%99%84%E4%B8%8A%E5%8E%9F%E6%96%87%E5%87%BA%E5%A4%84%E9%93%BE%E6%8E%A5%E5%8F%8A%E6%9C%AC%E5%A3%B0%E6%98%8E%E3%80%82%20%E5%8E%9F%E6%96%87%E9%93%BE%E6%8E%A5%EF%BC%9Ahttps://blog.csdn.net/weixin_42903419/article/details/111869521

原因是修改表结构以后,元数据库中的SDS中该表对应的CD_ID会改变,但是该表分区下面对应的CD_ID还是原来表的CD_ID,

比如我这边测试表叫:xj_test1,分区字段叫dt

 show create table   xxxx

查看表的CD_ID:select CD_ID from SDS where LOCATION='hdfs://n1:8020/user/hive/warehouse/xj_test1' ,(假设我们这里查出来表的新的CD_ID值为35178)

查看表的所有分区的CD_ID:SELECT * FROM SDS WHERE LOCATION LIKE 'hdfs://n1:8020/user/hive/warehouse/xj_test1/dt=%'

我们需要手工更新一下现有分区的CD_ID的值为表CD_ID的值:

UPDATE SDS SET CD_ID=35178 WHERE LOCATION LIKE 'hdfs://n1:8020/user/hive/warehouse/xj_test1/dt=%'
 

解决方法2:删除分区新建分区

iteye.com/blog/u010815305-2302921

原文地址:https://www.cnblogs.com/star521/p/15566353.html