簡體   English   中英

動態刪除蜂巢分區

[英]dropping hive partition dynamically

我有一個HIVE表,該表每天都有每日分區,如下所示(還包括將來日期的分區)

20160901
20160902
........
........
........
20160931
20161001
20161002

我想傳遞一個日期,例如昨天的日期20160922,並要動態刪除> = 20160922的所有分區(盡管今天是20160923,但我要從20160922的日期刪除)。

如何動態刪除所有這些分區。

您不能直接在配置單元中執行,因為它不支持動態sql。

可以使用shell腳本/或具有如下所示的刪除分區腳本的任何腳本創建文件來解決。

如果存在分區,則更改表partition_t drop(y = 20160922);

如果存在分區(y = 20160921),則更改表partition_t刪除;

如果存在分區(y = 20160920),則更改表partition_t刪除; ...

然后運行hive -v -f ./file.sh

如果存在分區,則更改表partition_t

在將數據插入表中之前執行以下步驟。

1)轉到該表的Hdfs文件夾,然后使用命令行管理程序刪除表目錄中的所有文件夾。 hadoop fs -rm r <>

2)運行MSCK修復表以更新有關分區的元數據。

以上兩個步驟將根據模式刪除所有可用分區。

現在插入新數據。

您可以刪除分區以提供范圍過濾器。 作為參考,請參見答案: https : //stackoverflow.com/a/48422251/3132181所以您的代碼可能像這樣:

Alter table mytable drop partition (datehour >= '20160922')

暫無
暫無

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

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