Hive将max+1插入到同一个表中不起作用



我有一个场景。。。

我有一个名为sample的表,有三列:

id, name, address

其中id是唯一的自动递增列。这是我的数据:

id名称地址1 john LA2彼得。与

我的下一个专栏是3, 'smith', 'vegas'

我试过这样做:

insert into sample select c1 as id from (select max(id)+1 from sample) c1, 'smith' as name , 'vegas' as address;

获取Error: Error compiling statement: FAILED: SemanticException Error in parsing (sttae=402000,code=40000)

我已经为自动递增列尝试过udf,但没有成功。

Hive(唉(不支持自动增量。您可以将其实现为:

insert into sample (id, name, address)
select coalesce(max(id) + 1, 1), 'smith' as name , 'vegas' as address
from sample c1;

也就是说,我强烈建议你不要这样做。同时运行的两个insert将(可能(看到相同的最大值,并为id插入相同的值。为了避免这种情况,您需要为每次插入锁定整个表。这是相当昂贵的。

请改用UUID和插入日期。

这可能是语法问题。因为我没有一个蜂窝实例可以尝试,

这行得通吗?

insert 
into sample 
select max(id)+1 c1
,max('smith') as name 
,max('vegas') as address
from sample 

相关内容

最新更新