如何在Hive中将原始日期作为分区插入表中?

问题描述:

create table h5_qti_desc 
(h5id string, 
    query string, 
    title string, 
    item string, 
    query_ids string, 
    title_ids string, 
    item_ids string, 
    label bigint 
)PARTITIONED BY (day string) LIFECYCLE 160; 

insert overwrite into h5_qti_desc 
select * from aaa 
; 

我创建了一个名为h5_qti_desc的表,并且我想从另一个aaa表中插入它,它具有day的字段并且在aaa中没有分区。 表aaa有好几天,比如'20171010','20171015'...
如何在日期中将h5_qti_desc作为分区插入一次,并将aaa中的日期作为h5_qti_desc分区中的日期。如何在Hive中将原始日期作为分区插入表中?

您可以使用Hive动态分区功能插入数据。动态分区插入(或多分区插入)旨在通过动态确定在扫描输入表时应创建和填充哪些分区来解决此问题。

下面是一个使用一个INSERT语句加载数据到所有分割的例子:

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

hive>INSERT OVERWRITE TABLE h5_qti_desc PARTITION(day) 
      SELECT * FROM aaa 
      DISTRIBUTE day;