簡體   English   中英

如何更新/刪除 Hive 分區?

[英]How to Update/Drop a Hive Partition?

將分區添加到Hive 中外部表后,如何更新/刪除它?

例如,您可以通過以下方式更新 Hive 分區:

ALTER TABLE logs PARTITION(year = 2012, month = 12, day = 18) 
SET LOCATION 'hdfs://user/darcy/logs/2012/12/18';

該命令不會移動舊數據,也不會刪除舊數據。 它只是將分區設置為新位置。

要刪除分區,您可以執行

ALTER TABLE logs DROP IF EXISTS PARTITION(year = 2012, month = 12, day = 18);

希望能幫助到你!

此外,您可以從一個語句中刪除多個分區(在 Impala/Hive 中刪除多個分區)。

摘自上述鏈接:

hive> alter table t drop if exists partition (p=1),partition (p=2),partition(p=3);
Dropped the partition p=1
Dropped the partition p=2
Dropped the partition p=3
OK

編輯 1:

此外,您可以使用條件符號 (>,<,<>) 刪除批量,例如:

Alter table t 
drop partition (PART_COL>1);
Alter table table_name drop partition (partition_name);

您可以將文件復制到外部分區所在的文件夾中,也可以使用

INSERT OVERWRITE TABLE tablename1 PARTITION (partcol1=val1, partcol2=val2...)...

陳述。

您可能還需要使包含表的數據庫處於活動狀態

use [dbname]

否則你可能會得到錯誤(即使你指定了數據庫,即 dbname.table )

失敗的執行錯誤,從 org.apache.hadoop.hive.ql.exec.DDLTask 返回代碼 1。 無法更改分區。 無法更改分區,因為表或數據庫不存在。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM