如何删除 Hive table 分桶

How to remove Hive table bucketing

我用 table stocks 错误地执行了以下 ALTER 语句:

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

如何撤销这个命令?

如果 table 是托管的,则将其设为外部:

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

描述 table 并记下它的位置、serde 属性并检查它是外部的:

describe formatted stocks;  

然后删除 table 并重新创建指定位置,数据将保留用于外部 table:

   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

或者,您可以创建 table 并使用指向同一位置的另一个名称,检查它是否有效,将第一个 table 设为外部,删除它,使用 [=14] 重命名第二个 table =]

ALTER TABLE tablename RENAME TO stocks.