如何在 Hive 中使用日期按周动态分区表

2024-02-25

有一个“结果”表,其中包含 ID 和日期列。

创建表结果(Id int,日期字符串)

行格式分隔字段以“,”结尾

存储为文本文件;

Id Date

11 2012-04-06

12 2012-05-08

13 2013-02-10

14 2013-05-06

15 2013-08-22

16 2014-04-01

17 2014-05-06

18 2014-06-03

19 2014-07-24

20 2014-08-26

如何通过根据上述日期列中的年份和周号进行动态分区,将上述数据存储到“历史”表中。

在历史表中,它应该包含基于年和周的分区,输出必须是

历史分区

2012分区包含2个分区

2013分区包含3个分区

2014分区包含5个分区


当你想做动态分区时,我们需要这样做

-- 为 Hive 会话设置以下两个属性:

SET hive.exec.dynamic.partition=true;
SET hive.exec.dynamic.partition.mode=nonstric;

-- 创建一个历史表,分区如下

hive> create table Historical (Id int, Date String) partitioned by (year_part string, week_no int) row format delimited fields terminated by ',';

--将数据加载到历史表中并从结果表中插入,以便根据日期的年份对历史表中的数据进行分区,并根据结果表中的日期动态查找周数。 -- 请确保要分区的列应位于 select 语句的最后。如果存在一系列列,则分区(col3,col4)中的顺序应与 select 语句中的匹配。

hive> insert overwrite table Historical partition(year_part, week_no) select id, date, year(date) as year_part, WEEKOFYEAR(date) as week_no from Results;

-- 现在验证正确创建的分区以及填充的数据是否正确。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Hive 中使用日期按周动态分区表 的相关文章

随机推荐