Как заявил @Shankarsh, улей пытается координировать свои запросы с помощью «блокировки» таблицы в metastore БД. Попробуйте запустить команду show locks ;
, в то время как на другом сеансе выполняется длинный запрос SELECT или INSERT, а другой сеанс пытается добавить ALTER в таблицу (нужно подождать, пока она не сможет получить эксклюзивную блокировку), чтобы увидеть ее самостоятельно.
К сожалению, это не помешает прямому доступу HDFS к файлам и каталогам. AFAIK существует только один тип блокировки в HDFS, и это эксклюзивный замок, используемый для создания/добавления/усечения файла (или последнего блока в существующий файл).
Типичный сценарий: вы отправляете запрос; Hive извлекает список файлов и блоков файлов при запросе времени компиляции затем запускает некоторые считыватели из этих блоков; Тем временем другая работа требует удаление одного из файлов ==> один из картографов будет аварии с FileNotFoundException
(я был там!)
Другой типичный сценарий: ... Тем временем другая работа создает новый файл или добавляет новый блок в существующий файл ==>, что данные никогда не будут доступны - и это не плохо.
В нижней строке: избегайте удаления файлов в каталоге HDFS, используемом таблицей Hive (независимо от того, управляется или не используется) , если только вы не можете проверить, что запрос не запущен в данный момент. Если вы хотите удалить все файлы за один раз, для управляемой таблицы используйте TRUNCATE
на уровне таблицы/раздела и пусть Hive сделает грязную информацию о координации.
В некоторых случаях вы можете попробовать сложный трюк с таблицей температуры, имеющими один разделом, EXCHANGE PARTITION
команды Hive (... координация ...), то HDFS удаление в временном каталоге, то другой EXCHANGE PARTITION
чтобы вернуть все оставшиеся файлы на место - но, конечно, любой запрос, запущенный между ними, будет видеть пустую таблицу, и это может быть проблемой.
... плюс любые данные INSERTed в betwen будут отправлены в limbo последним EXCHANGE (если только вы НЕ ВСТАВЛЯте его снова из таблицы temp в обычную таблицу сразу после этого). –
Все необходимое для отличного ответа: ответ на конкретные вопросы и описание того, как преодолеть навязанные проблемы. Спасибо! – ffriend