如何删除Hive表存储桶

时间:2018-11-01 14:36:14

标签: hive hiveql partitioning

我错误地对表ALTER执行了以下stocks语句:

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

如何撤消此命令?

1 个答案:

答案 0 :(得分:1)

如果表是托管表,则将其设置为外部表:

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

描述表并记下它的位置,serde属性并检查它是否为EXTERNAL:

describe formatted stocks;  

然后放置表并再次创建指定位置,数据将保留在EXTERNAL表中:

   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

或者,您可以使用其他名称指向相同位置的表来创建表,检查它是否起作用,将第一个表设为EXTERNAL,将其删除,然后使用

重命名第二个表

ALTER TABLE tablename RENAME TO stocks