PySpark。如何确保每日增量数据在 HIVE 中没有重复的 UUID 作为 PK
Posted
技术标签:
【中文标题】PySpark。如何确保每日增量数据在 HIVE 中没有重复的 UUID 作为 PK【英文标题】:PySpark. How do I make sure the daily incremental data has NO duplicated UUID as PK in HIVE 【发布时间】:2020-09-18 09:40:39 【问题描述】:我在 hive 中创建了一个表,以 UUID 作为主键,例如
create table if not exists mydb.mytable as SELECT uuid() as uni_id, c.name, g.city, g.country
FROM client c
INNER JOIN geo g ON c.geo_id = g.id
每天都需要往mytable中插入数据,如何保证每天的增量数据没有重复的UUID作为PK?
【问题讨论】:
【参考方案1】:如果通过 UUID,您正在寻找的是一个系列通用唯一标识符,那么我认为您可以使用自动增量 id。在纯HQL中,可以通过row_numer
和cross join来实现。
insert overwrite table dest_tbl
select
a.rn + b.mid as id, col1, col2,...
from (
select
*, row_number() over(order by rand()) as rn
from src_tbl
) a
join (select max(id) as mid from dst_tbl) b
【讨论】:
我尝试了row_number,只要我找到最后一次摄取的最大id,并将该id添加到row_number,它就像一个魅力。然而,我们的目标是在每日增量数据中使用 UUID。有任何想法吗?感谢您的帮助!以上是关于PySpark。如何确保每日增量数据在 HIVE 中没有重复的 UUID 作为 PK的主要内容,如果未能解决你的问题,请参考以下文章