在我的Hive中,我可以看到以下内置函数:
describe FUNCTION extended uuid
uuid() - Returns a universally unique identifier (UUID) string.
The value is returned as a canonical UUID 36-character string.
Example:
> SELECT uuid();
'0baf1f52-53df-487f-8292-99a03716b688'
> SELECT uuid();
'36718a53-84f5-45d6-8796-4f79983ad49d'
我正在尝试为表中的每一行生成uuid:
from (select *, uuid() as id from table1) t
insert into table table2
select a,b,id
insert into table table3
c,id;
每个表中的每一行都以相同的uuid值结束。但是,如果我用rand()函数替换uuid()函数,那么每一行都以不同的随机id结束。为什么uuid()只生成一个值?
我不能使用reflect('java.util.uuid','randomuuid'),因为reflect被sentry阻止。
1条答案
按热度按时间yyhrrdl81#
这个
UUID
函数是在2.2.0中添加的,不幸的是它有一个bug,因为它没有被标记为非确定性。如果您更新到2.2.3,它将按预期工作,如果这不是一个选项,您可以创建自己的uuid生成器udf在它的地方,