MSCK-全称metastore consistency check,即Hive表分区连贯性检查。
MSCK REPAIR TABLE XXX,我们可以简单的将它理解为"刷新分区",
其主要是用来解决通过hdfs dfs -put或者hdfs api写入hive分区表的数据在hive中无法被查询到的问题。
Hive能检测到的分区信息,同database、table等一样,是Hive的元数据信息之一,存储在Derby、MySQL等数据库中。
怎么新建分区,分区信息才会存储到MySQL中?
方式1:插入数据前,使用alter table xxx add partition()创建分区;
方式2:插入数据时,使用insert into table xxx partition() value()创建分区,
怎么新建分区,分区信息不会存储到MySQL中?
Hive的数据实际存储在HDFS中,以多层目录的形式存储。
方式1:直接使用hdfs -put向HDFS中创建目录,上传数据:
方式2:通过其他形式,直接向Hive表在HDFS中的存储位置创建分区,建立数据。比如服务端DB通过kafka直接将数据落地到HDFS。
以上两种情况都不会在MYSQL存储的元数据信息中添加新分区信息。
如果以上两种方式新的元数据信息添加到了HDFS中,却没有添加到MYSQL中,这时就需要使用MSCK REPAIRE TABLE xxx 进行"刷新分区"了.