如何将按月分区的配置单元表中的数据加载到按周分区的配置单元表中

Posted

技术标签:

【中文标题】如何将按月分区的配置单元表中的数据加载到按周分区的配置单元表中【英文标题】:How to load data from hive table partitioned by month to a hive table partitioned by week 【发布时间】:2021-06-17 07:44:18 【问题描述】:

我有两个蜂巢表。

源表按月分区。所以分区列如下所示。

event_column, partition_month
2021-10-25 00:48:36.0, 2020-10
2021-11-18 00:46:36.0, 2020-11
2021-12-20 00:42:34.0, 2020-12

目标表按周分区。目标表具有以下格式的分区列

partition_week
2021-11-07
2021-11-14
2021-11-21

我想在 where 子句中使用上述两列加载最近 6 个月的数据。谁能帮帮我。

【问题讨论】:

应该表示星期几? 表示为yyyy-mm-dd 【参考方案1】:

一个选项是根据 event_column 派生分区周列。 select next_day(date_sub(to_date('2021-11-18 00:46:36.0'),7),'SUN') 这将为您提供 2021-11-14。然后您可以在写入目标表时使用此列。

礼貌:How to get the Date of the first day of a week given a time stamp in Hadoop Hive?@Régis ARCHAMBAULT

【讨论】:

这很好,谢谢。实际上,我想从表中的最新日期加载 6 个月大的数据。我可以通过 where 子句中的第二个查询来做到这一点。有没有更好的方法来做到这一点。 如果您想使用其他列,我认为这只能通过首先计算从当前日期开始的第 6 个月大的日期,然后检查它是否属于分区周和月来实现。正如你所说,它需要一个子查询。如果我得到其他东西,我会更新

以上是关于如何将按月分区的配置单元表中的数据加载到按周分区的配置单元表中的主要内容,如果未能解决你的问题,请参考以下文章

hive中如何进行按周计算

hive中如何进行按周计算

Sqoop 增量加载到分区的配置单元表中

通过 pig 脚本删除 hive 表分区

oracle表分区详解(按天按月按年等)

BigQuery:使用 DML 原子地替换日期分区