我想在现有的配置单元表中添加一个额外的列,以便可以拥有当天的当前时间戳

时间:2019-02-08 21:22:56

标签: sql hadoop hive

需要在我现有的配置单元表中添加额外的日期列,以便它能够 系统当天的当前日期

hive (hivejobs)>
select * from my_current_Table;
OK
name   age
Aditya  2
Aditya  7

我想在此处添加日期列,以便我一添加列即可获取当天的当前系统日期。我认为,解决方法是将两个表与当前系统日期的其他表连接起来。

下面是我的代码和思考过程。

alter table my_current_Table add columns( todays_date current_date());

这给了我一个错误,我找不到实际的方法

请帮助。

预期产量

hive (hivejobs)> 
select * from my_current_Table;

OK
name   age  todays_date
Aditya  2   2019-02-08 13:21:50
Aditya  7   2019-02-08 13:21:50

2 个答案:

答案 0 :(得分:1)

您不能在Hive表中定义计算列。

如果您想始终查询今天的日期,请在选择项中使用find . -name *log.2017* -type f -exec stat -c "%s" {} \; | paste -sd+ | bc 函数:

current_timestamp

如果要添加列并存储插入记录的日期,请将列添加到表中并从表中重新加载,例如:

select t.*, 
       date_format(current_timestamp,'yyyyMMdd HH:mm:ss') as todays_date 
  from my_current_Table t;

答案 1 :(得分:0)

以下是相同的步骤,

  1. 创建一个临时表
  

创建表my_current_Table_temp(名称字符串,age int);

  1. 使用文件或现有表将数据插入my_current_Table_temp表中:
  

姓名|年龄

     

Aditya | 2

     

Aditya | 7

  1. 创建一个包含最终数据的表:
  

创建表my_current_Table(名称字符串,年龄tinyint,todays_date   字符串);

  1. 从临时表中插入数据,并在其中添加默认值作为当前日期和时间的列:
  

插入覆盖表my_current_Table选择名称,年龄,   FROM_UNIXTIME(UNIX_TIMESTAMP(),'dd / MM / YYYY HH:mm')来自   my_current_Table_temp;