Как переименовать таблицу улья без изменения местоположения?
Основываясь на документе Hive ниже:
Переименовать таблицу
ALTER TABLE table_name RENAME TO new_table_name;
Этот оператор позволяет вам изменить имя таблицы на другое имя.
Начиная с версии 0.6, переименование в управляемой таблице также перемещает местоположение HDFS. (Версии Older Hive просто переименовали таблицу в метасторе, не перемещая местоположение HDFS.)
Есть ли способ переименовать таблицу без изменения местоположения?
Ответы
Ответ 1
Да, мы можем это сделать. Вам просто нужно следовать ниже трех команд в последовательности.
-
Допустим, у вас есть внешняя таблица test_1 в улье. И вы хотите переименовать его test_2, который должен указать точку test_2, а не test_1. Затем вам нужно преобразовать эту таблицу в управляемую таблицу, используя команду ниже. test_1 → указывает на место test_1
ALTER TABLE db_name.test_1 SET TBLPROPERTIES('EXTERNAL'='FALSE');
-
Переименуйте имя таблицы.
ALTER TABLE db_name.test_1 RENAME TO db_name.test_2;
-
Снова преобразуйте управляемую таблицу после переименования во внешнюю таблицу.
ALTER TABLE db_name.test_2 SET TBLPROPERTIES('EXTERNAL'='TRUE');
Таблица db_name.test_2 укажет местоположение test_2. Если мы сделаем это без создания управляемой таблицы, она укажет местоположение test_1.
Ответ 2
Начиная с Hive 2.2.0 местоположение управляемой таблицы HDFS перемещается только в том случае, если таблица создана без предложения LOCATION и в его каталоге базы данных. Ссылка
Ответ 3
Вот команда выполнена
ALTER TABLE old_ratings RENAME TO ratings;
Ответ 4
ALTER TABLE не соответствует синтаксису databasename.tablename в Hive, как это происходит в CREATE или SELECT. Сначала укажите имя базы данных, а затем выполните инструкцию alter table.
синтаксис как ниже
USE databasename;
ALTER TABLE old_tablename RENAME TO new_tablename;