如何从字段中动态插入配置单元?

Posted

技术标签:

【中文标题】如何从字段中动态插入配置单元?【英文标题】:How to make dynamic insert in hive from a field? 【发布时间】:2019-03-31 20:18:59 【问题描述】:

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

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】:

使用动态分区:

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;

最好使用 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'), 'yyyy-MM-dd') as reference_date
FROM tab1 LIMIT 100;

【讨论】:

以上是关于如何从字段中动态插入配置单元?的主要内容,如果未能解决你的问题,请参考以下文章

如何从动态创建的表格视图单元格的输入字段中将数据检索到数组

从 Swift (3.1) 表格视图中动态创建的单元格获取有序的文本字段数据

iOS - 如何在将单元格动态插入 UICollectionView 之前正确重新加载单元格

如何使用打字稿在表格的单元格中动态插入锚标记?

从动态表格视图中的文本字段获取文本并将其插入到数组中

在动态表格视图中获取文本字段值