如何通过字段在蜂巢中进行动态插入?

时间:2019-03-31 20:19:00

标签: hive hiveql

我有一列有几个日期,如下所示:

Sun Oct 22 05:35:03 2017
Mon Apr 16 14:33:43 2018
Fri Apr 13 10:41:43 2018

我创建了一个过滤这些日期并将其转换为YYYYMMDD的过程,如下所示。

20171022
20180416
20180413

此结果将用于将数据分发到它们各自的分区中,这些分区是每天的。

我试图这样做,但没有成功:

insert into table tab2
PARTITION (REFERENCE_DATE = from_unixtime (unix_timestamp ('Sun Oct 22 05:35:03 2017', 'E MMM dd HH: mm: ss yyyy'), 'yyyyMMdd'))
SELECT
from_unixtime (unix_timestamp ('Sun Oct 22 05:35:03 2017', 'E MMM dd HH: mm: ss yyyy'), 'yyyyMMdd') as reference_date
FROM tab1 LIMIT 100;

如何插入?

1 个答案:

答案 0 :(得分:0)

使用动态分区:

wp.element

最好使用yyyy-MM-dd日期格式,因为这是本地的Hive日期格式:

set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;

insert into table tab2
PARTITION (REFERENCE_DATE)
SELECT
from_unixtime (unix_timestamp ('Sun Oct 22 05:35:03 2017', 'E MMM dd HH: mm: ss yyyy'), 'yyyyMMdd') as reference_date
FROM tab1 LIMIT 100;