Hadoop 配置单元和Sqoop分区

Hadoop 配置单元和Sqoop分区,hadoop,hive,sqoop,sqoop2,Hadoop,Hive,Sqoop,Sqoop2,我有来自Netezza表的sqoopd数据,输出文件是HDFS格式的,但有一列是时间戳,我想将它作为日期列加载到配置单元表中。使用该列,我想在日期创建分区。我该怎么做 示例:在HDFS中,数据类似于=2013-07-30 11:08:36 在hive中,我只想加载日期2013-07-30,而不是时间戳。我想每天对那个专栏进行分区 如何以动态方式逐列传递分区 我尝试过将数据作为源加载到一个表中。在最后一个表中,我将按日期插入覆盖表分区\u column=dynamic date select*fr

我有来自Netezza表的sqoopd数据,输出文件是HDFS格式的,但有一列是时间戳,我想将它作为日期列加载到配置单元表中。使用该列,我想在日期创建分区。我该怎么做

示例:在HDFS中,数据类似于=2013-07-30 11:08:36

在hive中,我只想加载日期2013-07-30,而不是时间戳。我想每天对那个专栏进行分区

如何以动态方式逐列传递分区


我尝试过将数据作为源加载到一个表中。在最后一个表中,我将按日期插入覆盖表分区\u column=dynamic date select*from table 1

设置这两个属性-

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-partition-key    
--hive-partition-value 

通过启用动态分区并使用date函数将时间戳转换为日期,您可以从EMP加载EMP_历史记录表

代码可能看起来像这样

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 ;

你好感谢您提供的信息。我已尝试写入datedaye列…partition col是表1中最后一列写入datedate列date列的列。但它不起作用。它为datecol列提供解析异常而不是插入覆盖有没有办法只写入新的或更新的列。不要在表中重新写入所有数据可能日期不正确格式正确-检查任务跟踪器日志。Sqoop有这个增量导入选项—您可以扩展配置单元导入的两个选项—如果是增量导入,您将能够获得当天的分区-配置单元分区键-配置单元分区值