Hive生成ID

时间:2017-06-29 15:52:36

标签: hadoop hive

我正在尝试为最初在DB2中使用以下内容完成的表生成唯一的id:

insert into database.table
select next value for database.sequence,
       current_timestamp,
from source

序列具有定义的起始值(例如25430)。

我目前使用的代码是:

insert into database.table
select 
 row_number() over() + select max(id) from table,
 from_unixtime(unix_timestamp())
from source;

除了嵌套的select语句不起作用之外没什么用,我必须运行

select max(id) from table

并手动将其放入查询中。

有人可以在一个查询中建议一种方法吗?

1 个答案:

答案 0 :(得分:0)

你必须强制交叉连接,如下所示:

select 
...
from source,
(select max(id)as maxid from table) as m_id
;

通过这种方式,您可以获得一个最大ID值,然后您可以使用它来生成新值。

用蜂巢生成代理键有点痛苦,令人遗憾。