У меня есть функциональность, где я хочу удалить данные из раздела. Если все данные удалены, удалите также и раздел.
Ниже приведены шаги, которые мы находим:
- Поиск данных для раздела на основе даты.
- Удалить данные из раздела
- Проверьте, присутствуют ли какие-либо записи, если присутствует, выполняет вычислительную статистику. Для столбцов.
- Если нет записей, удалите раздел и выполните статистику вычислений.
Когда мы выполняем запрос на выборку, он показывает ошибку для удаленного раздела.
Даже если мы вызываем статистику вычислений, она показывает, что раздела не существует.
Я что-то пропустил?
Мы пытались вычислить статистику с некоторыми изменениями кода, но она не будет работать. Ниже приведены шаги, которые мы выполняем:
Если раздел удален, ниже приведены следующие 2 шага, которые мы выполняем:
ALTER TABLE transactions DROP IF EXISTS PARTITION (eventday=" + eventDay + ")
ALTER TABLE transactions ADD IF NOT EXISTS PARTITION (eventday=" + eventDay + ")
Эти шаги выполняются каждый раз:
ANALYZE TABLE transactions PARTITION(eventday=" + eventDay + ") COMPUTE STATISTICS FOR COLUMNS
ANALYZE TABLE transactions PARTITION(eventday=" + eventDay + ") COMPUTE STATISTICS
Ожидаемый результат - избежать этого исключения, поскольку раздел недоступен.
но для запроса на выборку для удаления раздела он показывает эту ошибку.
java.sql.SQLException: сбой запроса (# 20190619_060000_00416_bztpj): расположение раздела не существует: hdfs: // XXXX / XX / XX