繁体   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