Каково взаимодействие с пользователем при обмене разделами в Apache Hive? Является ли он атомарным или дискретным и состоит из нескольких шагов, таких как:
partition rename
data copy
old partition drop
table repair
?
Каково взаимодействие с пользователем при обмене разделами в Apache Hive? Является ли он атомарным или дискретным и состоит из нескольких шагов, таких как:
partition rename
data copy
old partition drop
table repair
?
Поскольку мои исследования привели меня сюда, я решил поделиться тем, что узнал, для других пользователей Google, хотя у меня нет определенного ответа.
Более подходящим названием EXCHANGE PARTITION будет MOVE PARTITION, так как он работает только тогда, когда пункт назначения раздел не существует:
Команда EXCHANGE PARTITION переместит раздел из исходной таблицы в целевую и изменит метаданные каждой таблицы. [...]
При выполнении команды папка раздела исходной таблицы в HDFS будет переименована, чтобы переместить ее в папку раздела целевой таблицы. Хранилище метаданных Hive будет обновлено, чтобы соответствующим образом изменить метаданные исходной и целевой таблиц. [...]
Целевая таблица не может содержать раздел, подлежащий обмену.
Таким образом, эффект от длительного запроса к таблице «назначение» должен быть аналогичен эффекту ADD PARTITION, который должен быть "продолжается работать нормально", но это не так, по крайней мере, в некоторых версиях.
Это в основном согласуется с комментариями Самсона, за исключением того, что я не понимаю, почему может произойти «FileNotFoundException» (если только мы не говорим о запросе к «источнику», а не к «целевой» таблице).
show locks
) Если да, операции DDL устанавливают блокировку записи для таблицы/раздела, а операции чтения блокируются. Если нет, то это дикий дикий запад сFileNotFoundException
изобилием. - person Samson Scharfrichter   schedule 12.06.2018