Вы правы в том смысле, что он читает структуру каталогов, создает из нее разделы, а затем обновляет метасредство улья.Фактически, в последнее время команда была улучшена для удаления несуществующих разделов из metastore.Пример, который вы приводите, очень прост, поскольку он имеет только один уровень ключей секционирования.Рассмотрим таблицу с несколькими ключами разделов (на практике распространено 2-3 ключа разделов).msck repair
придется выполнить полный обход всех подкаталогов в каталоге таблицы, проанализировать имена файлов, убедиться, что имена файлов действительны, проверить, существует ли раздел в метастазах, и затем добавитьединственные разделы, которых нет в метастазах.Обратите внимание, что каждый листинг в файловой системе представляет собой RPC для namenode (в случае HDFS) или вызов веб-службы в случае S3 или ADLS, что может увеличить время.Кроме того, чтобы выяснить, присутствует ли раздел в metastore или нет, необходимо выполнить полный список всех разделов, о которых metastore знает для таблицы.Оба эти шага могут потенциально увеличить время, необходимое для команды на больших таблицах.Производительность таблицы восстановления MSK была значительно улучшена в последнее время Hive 2.3.0 (см. HIVE-15879 для более подробной информации).Вы можете настроить hive.metastore.fshandler.threads
и hive.metastore.batch.retrieve.max
для повышения производительности команды.