【问题标题】:drop partition dynamically from HIVE table从 HIVE 表中动态删除分区
【发布时间】:2016-10-12 23:07:20
【问题描述】:

我有一个配置单元表,其中一个日期列上存在分区,但日期列以 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

当我编写像ALTER TABLE TABLE1 DROP IF EXISTS PARTITION (TBL_DATE >= 20160910) 这样的放置分区时,它工作正常。

考虑到我的输入只是日期格式 YYYY-MM-DD,我已经删除了所有给定输入日期 -1 的分区;如何使上述语句起作用。

【问题讨论】:

    标签: hive


    【解决方案1】:

    请先设置为非严格模式,然后再动态执行,

    SET hive.exec.dynamic.partition=nonstrict
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-29
      • 2013-07-26
      • 2018-05-18
      • 1970-01-01
      相关资源
      最近更新 更多