簡體   English   中英

從HIVE表動態刪除分區

[英]drop partition dynamically from HIVE table

我有一個hive表,其中一個日期列存在分區,但日期列以YYYYMMDD格式存儲為INT。 該表還可以包含未來日期分區的數據。

現在作為整個過程的一部分,我想刪除那些令人興奮的分區(坐在處理日)。

所以我想在下面使用

ALTER TABLE TABLE1 DROP IF EXISTS PARTITION (TBL_DATE >= CAST(REGEXP_REPLACE(CAST(DATE_SUB(TO_DATE('${load_date}'),1) AS STRING),'-','') AS INT));

表示日期值

ALTER TABLE TABLE1 DROP IF EXISTS PARTITION (TBL_DATE >= CAST(REGEXP_REPLACE(CAST(DATE_SUB(TO_DATE('2016-09-11'),1) AS STRING),'-','') AS INT));

但它失敗了。

查詢的輸出是CAST(REGEXP_REPLACE(CAST(DATE_SUB(TO_DATE('2016-09-11'),1) AS STRING),'-','') AS INT) => 20160910

當我編寫我的drop分區時,如ALTER TABLE TABLE1 DROP IF EXISTS PARTITION (TBL_DATE >= 20160910) ,那么它工作正常。

考慮到我的輸入將只是日期格式YYYY-MM-DD並且我已經刪除所有給定輸入日期為-1的分區; 如何使上述聲明有效。

請先將其設置為非嚴格模式,然后動態執行,

SET hive.exec.dynamic.partition=nonstrict

暫無
暫無

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

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