【问题标题】:Identify missing partitions in a hive table识别配置单元表中缺少的分区
【发布时间】:2023-03-08 10:33:01
【问题描述】:

我的表每天运行,并在每一天生成一个名为 date 的分区列

例如:我的查询生成日期

2018-01-01
2018-01-02
2018-01-03
2018-01-06
2018-01-08

2018-01-05 & 2018-01-07 缺少日期。有什么方法可以识别那些缺失的日期吗?

【问题讨论】:

  • 你能发布你的生成日期的查询(或示例 sql)吗?谢谢。

标签: hadoop hive hortonworks-data-platform


【解决方案1】:

以下查询将 1) 创建一个临时表,其中包含从开始分区日期到最新分区日期的连续日期 2) 执行左连接并查看缺少哪些分区日期(partition_dt 为空)。希望这可以帮助。谢谢。

create table partition_dtes as 
with cal_date as (select min(partition_dt) as min_dt, max(partition_dt) as max_dt from mytable) 
select date_add(t.min_dt, pe.idx) as series_dte
from  cal_date t
lateral view
posexplode(split(space(datediff(t.max_dt,t.min_dt)),' ')) pe as idx, dte; 
Result: 
2018-01-01
2018-01-02
2018-01-03
2018-01-04
2018-01-05
2018-01-06
2018-01-07
2018-01-08

select distinct dte.series_dte
from partition_dtes dte
left join mytable  tbl
on dte.series_dte=tbl.partition_dt
where tbl.partition_dt is null
order by dte.series_dte;

Result:
   2018-01-04
   2018-01-05
   2018-01-07

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-31
    • 1970-01-01
    • 1970-01-01
    • 2015-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多