gpt4 book ai didi

hive - 从 HIVE 表中动态删除分区

转载 作者:行者123 更新时间:2023-12-04 22:04:34 24 4
gpt4 key购买 nike

我有一个配置单元表,其中一个日期列上存在分区,但日期列以 YYYYMMDD 格式存储为 INT。该表还可以包含 future 日期分区的数据。

现在作为流程的一部分,我想删除正在使用的分区(坐在处理日)。

所以我想在下面使用

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

关于hive - 从 HIVE 表中动态删除分区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40009771/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com