Как переименовать таблицу улья без изменения местоположения?

Основываясь на документе Hive ниже:

Переименовать таблицу

ALTER TABLE table_name RENAME TO new_table_name;

Этот оператор позволяет вам изменить имя таблицы на другое имя.

Начиная с версии 0.6, переименование в управляемой таблице также перемещает местоположение HDFS. (Версии Older Hive просто переименовали таблицу в метасторе, не перемещая местоположение HDFS.)

Есть ли способ переименовать таблицу без изменения местоположения?

Ответ 1

Да, мы можем это сделать. Вам просто нужно следовать ниже трех команд в последовательности.

  1. Допустим, у вас есть внешняя таблица test_1 в улье. И вы хотите переименовать его test_2, который должен указать точку test_2, а не test_1. Затем вам нужно преобразовать эту таблицу в управляемую таблицу, используя команду ниже. test_1 → указывает на место test_1

    ALTER TABLE db_name.test_1 SET TBLPROPERTIES('EXTERNAL'='FALSE');
    
  2. Переименуйте имя таблицы.

    ALTER TABLE db_name.test_1 RENAME TO db_name.test_2;
    
  3. Снова преобразуйте управляемую таблицу после переименования во внешнюю таблицу.

    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;