如何使用HIVE自动获取列中的当前日期和时间

时间:2015-08-26 06:17:56

标签: hadoop hive bigdata

嘿,我的HIVE表中有两列:

例如: -

c1 : name
c2 : age

现在,在创建表时,我想再声明两列,这些列会自动为我提供加载行的当前日期和时间。  例如:John 24 26/08/2015 11:15 怎么办呢?

3 个答案:

答案 0 :(得分:0)

注意:您不能将1列作为CURRENT_TIMESTAMP设置。

这样,您无法在一列中设置CURRENT_TIMESTAMP

<强> SQL:

CREATE TABLE IF NOT EXISTS `hive` (
  `id` int(11) NOT NULL,
  `name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `age` int(11) DEFAULT '0',
  `datecreated` timestamp NULL DEFAULT CURRENT_TIMESTAMP
);

enter image description here

答案 1 :(得分:0)

Hive当前不支持在创建表时为任何列定义添加默认值的功能。请参阅完整配置单元创建表语法的链接: Hive Create Table specification

解决此问题的替代方法是临时将数据加载到临时表中,并使用 insert overwrite table 语句将当前日期和时间添加到主表中。

以下示例可能有所帮助

1。创建临时表

create table EmpInfoTmp(name string, age int);

<强> 2。使用文件或现有表将数据插入EmpInfoTmp表:

  

姓名<年龄
Alan | 28
起苏| 32岁玛莎| 26


第3。创建一个包含最终数据的表格:

create table EmpInfo(name string, age tinyint, createDate string, createTime string);

<强> 4。从临时表中插入数据,并使用默认值作为当前日期和时间添加列:

insert overwrite table empinfo select name, age, FROM_UNIXTIME( UNIX_TIMESTAMP(), 'dd/MM/YYYY' ), FROM_UNIXTIME( UNIX_TIMESTAMP(), 'HH:mm' ) from empinfofromfile;


<强> 5。最终结果如下:

  

name | age | createdate | createtime
Alan | 28 | 26/08/2015 | 03:56
玛莎| 26 | 26/08/2015 | 03: 56
苏| 32 | 26/08/2015 | 03:56


请注意,通过将数据添加到最终表格时,将准确输入创建日期和时间值。

答案 2 :(得分:0)

嘿,我找到了一种使用shell脚本的方法。

以下是:

回显“ $(日期+”%Y-%m-%d-%T“) $(wc -l / home / hive / landing / $ line)$ dir“&gt;&gt; /home/hive/recon/fileinfo.txt

这里我得到没有空格的日期。最后,我将文本文件上传到我的hive表。