解决:
msck repair table 表名
原因:
hive有个服务叫metastore,这个服务主要是存储一些元数据信息,比如数据库名,表名或者表的分区等等信息
如果不是通过hive的insert等插入语句,很多分区信息在metastore中是没有的
如果插入分区数据量很多的话,你用 ALTER TABLE table_name ADD PARTITION
一个个分区添加十分麻烦,这时候MSCK REPAIR TABLE
就派上用场了
运行MSCK REPAIR TABLE
命令,hive就会去检测这个表在hdfs上的文件,把没有写入metastore的分区信息写入metastore