hive和sqoop分区

hgqdbh6s  于 2021-06-04  发布在  Hadoop
关注(0)|答案(2)|浏览(441)

我有来自netezza表的sqoopd数据,输出文件是hdfs格式的,但有一列是时间戳,我想在配置单元表中将它作为日期列加载。我想用这个列在date上创建分区。我该怎么做?
示例:在hdfs中,数据类似于=2013-07-30 11:08:36
在hive中,我只想加载日期(2013-07-30),而不是时间戳。我想每天在那一列上分区。
如何动态地按列传递分区?
我尝试过将数据作为源加载到一个表中。在最后一个表中,我将执行insert overwrite table partition by(date\u column=dynamic date)select*from table1

2lpgd968

2lpgd9681#

设置这2个属性-

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

查询可以是-

INSERT OVERWRITE TABLE TABLE PARTITION (DATE_STR)
SELECT 
  :
  :
 -- Partition  Col is the last column 
  to_date(date_column) DATE_STR
FROM table1;

您可以探索hive导入的两个选项—如果是增量导入,您将能够获得当天的分区。

--hive-partition-key    
--hive-partition-value
jgovgodb

jgovgodb2#

您可以通过启用动态分区并使用to\ u date函数将时间戳转换为日期,从emp加载emp\ u history表
代码可能如下所示。。。。

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

INSERT OVERWRITE TABLE EMP_HISTORY PARTITION (join_date)
    SELECT e.name as name, e.age as age, e.salay as salary, e.loc as loc, to_date(e.join_date) as join_date from EMP e ;

相关问题