Виды кустов, не отражающие изменения базовой таблицы - PullRequest
0 голосов
/ 29 октября 2018

У меня есть несколько просмотров в Hive. Большинство представлений были созданы с использованием шаблона select *, а не конкретных имен столбцов. Когда столбец был удален из базовой таблицы, все эти представления начали выдавать missing column ошибок. Я даже не мог сделать select * from myview.

Похоже, что хотя мой исходный текст создания представления select *, Hive, похоже, преобразовал их в расширенный формат, такой как select col1, col2, col3 etc.

Есть ли обходной путь или параметр, который я должен включить, чтобы изменения отражались в представлениях без необходимости их повторного создания.

1 Ответ

0 голосов
/ 30 октября 2018

Hive использует определения сохраненных видов.

В SQL: 200n определение представления должно быть заморожено во время его создания, так что если представление определено как select * from t, где t - таблица с двумя столбцами a и b, то позже запросы на выбор * из представления должны возвращать только столбцы a и b, даже если новый столбец c позднее добавляется в таблицу. Это правильно реализовано большинством продуктов СУБД. Подробнее в этом документе дизайна: Определение сохраненного вида

Итак, вам нужно выполнить команду ALTER VIEW [db_name.]view_name AS select_statement;, чтобы отразить изменения DDL. Alter View As Select изменяет определение представления, которое должно существовать. Синтаксис такой же, как для CREATE VIEW, а эффект такой же, как для CREATE OR REPLACE VIEW. Подробнее см. Здесь: Изменить вид .

...