如何从字段中动态插入配置单元?
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) 表格视图中动态创建的单元格获取有序的文本字段数据