Как убрать группировку таблицы Hive

Я по ошибке выполнил следующий оператор ALTER с таблицей stocks:

ALTER TABLE stocks
CLUSTERED BY (exchange, symbol)
INTO 48 BUCKETS;

Как отменить эту команду?


person Iskuskov Alexander    schedule 01.11.2018    source источник
comment
Пробовали ли вы создать новую таблицу, например CREATE TABLE new_table as SELECT * FROM your_bucketed_table, а затем удалить Bucketed_table и переименовать new_table   -  person Bala    schedule 01.11.2018
comment
вы не можете undo alter.   -  person pvy4917    schedule 01.11.2018


Ответы (1)


Если таблица управляемая, то сделайте ее внешней:

ALTER TABLE stocks SET TBLPROPERTIES('EXTERNAL'='TRUE');

Опишите таблицу и обратите внимание на ее расположение, свойства serde и убедитесь, что она является ВНЕШНЕЙ:

describe formatted stocks;  

Затем удалите таблицу и создайте заново, указав местоположение, данные останутся для ВНЕШНЕЙ таблицы:

   DROP TABLE stocks; 

    CREATE EXTERNAL TABLE stocks(
            columns definition)
        STORED AS TEXTFILE --use the same DDL 
        location '/table_location_path'; --use the same path from describe table

В качестве альтернативы вы можете создать таблицу с другим именем, указывающим на то же место, проверить, работает ли она, сделать первую таблицу ВНЕШНЕЙ, удалить ее, переименовать вторую таблицу, используя

ALTER TABLE tablename RENAME TO stocks.

person leftjoin    schedule 01.11.2018