1.遇到的问题
我建了一个外部表,并且在创建表时设置了分区,当我把这个外部表删除后,重新建一模一样的表,却查询不到数据。(按理说,删除外部表,不会删除数据的,怎么会查不到数据呢)
2.解决办法
原因是MySQL中没有记录对应分区的元数据,众所周知,Hive的元数据是在MySQL中的,删除表后,元数据也没了。
需要在Hive中刷新分区信息,即在存储元数据的数据库中添加分区资料,例如
ALTER TABLE ods.ods_db_logs_honor_lqbs_f_y ADD IF NOT EXISTS PARTITION (year='2019');
此时查询,便有数据了。