簡體   English   中英

刪除小於給定字符串的 kudu 范圍分區

[英]Deleting kudu range partitions less than the given string

我想從分區值小於給定日期字符串的 kudud 表中刪除所有 Kudu RANGE 分區。 我正在使用以下查詢,但它不起作用。 有人可以建議解決方法是什么。

alter table test_table drop if exists range partition values < '2010-01-31';

我的 Impala 版本是 2.6x,它似乎不適用於“<”比較。 我不能使用“=”,因為它將動態完成,我需要一個查詢來清除傳遞日期字符串之前的所有空 kudu 分區。

我認為在你的版本上你不能使用這樣的語法,看起來這個功能是在 Impala 2.8 中添加的

文檔

要刪除或更改多個分區:

在 Impala 2.8 及更高版本中,具有 DROP 或 SET 操作的分區子句的表達式可以包括比較運算符,例如 <、IN 或 BETWEEN,以及布爾運算符,例如 AND 和 OR。

例如,您可能會在數據“老化”后刪除一組對應於特定日期范圍的分區:

alter table historical_data drop partition (year < 1995); alter table historical_data drop partition (year = 1996 and month between 1 and 6);

對於有多個分區鍵列的表,可以指定多個條件,以逗號分隔,只對滿足所有條件的分區進行操作(類似於使用AND子句):

alter table historical_data drop partition (year < 1995, last_name like 'A%');

此技術還可用於更改分區組的文件格式,作為 ETL 管道的一部分,該管道定期合並並以不同的文件格式重寫底層數據文件:

alter table fast_growing_data partition (year = 2016, month in (10,11,12)) set fileformat parquet;

如果您想看一下,這是添加它的票證: Jira issue

不確定如何處理它,也許您可以編寫一些腳本/spark shell 代碼,它將列出所有分區並只選擇一個您想要的分區並將它們連接到一個您的 Impala 可以處理的查詢中

暫無
暫無

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

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