HIVE下分布式生成整型唯一ID

场景:hive下target_table表id字段需要唯一

实现方法:row_number分析函数实现,每次从target_table取最大的id作为基准,row_number函数基于结果集上累加上该基准值,实现id递增且不重复;

注意事项:row_number代码不能并行执行,同一时间保证只有一个地方调用,不会有问题;

实现方法代码如下

select
    t2.rn+row_number() over() as id,
    t1.a
from 
(
    select 1 as a
    union all
    select 2 as a
    union all
    select 3 as a
    union all
    select 4 as a
) t1
join
(
    select
        nvl(max(id)) as max_id
    from
        target_table
) t2; 

你可能感兴趣的:(HIVE)