Hive中生成随机唯一标识ID的方法

Posted hellodev

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hive中生成随机唯一标识ID的方法相关的知识,希望对你有一定的参考价值。

HIVE中处理的数据往往比较多,在处理数据的时候希望给处理得到的数据一个ID标识,这时候可以用到UUID。

UUID的算法的核心思想是结合机器的网卡、当地时间、一个随即数来生成UUID。从理论上讲,如果一台机器每秒产生10000000个UUID,则可以保证(概率意义上)3240年不重复。UUID 的目的,是让分布式系统中的所有元素,都能有唯一的标识,而不需要透过中央控制端来做标识。如此一来,每个人都可以建立不与其它人冲突的UUID。在这样的情况下,就不需考虑数据标识建立时的名称重复问题。

产生形如下数据: 
690044a7-1400-4f2e-8003-4df850f21ac2 
0eea4f29-6e80-4d8e-a7ce-5d4ea5f0e882 
869d23f8-fe44-4d71-9c5b-3d94b1892f48

在HQL中可以这么写:

regexp_replace(reflect("java.util.UUID", "randomUUID"), "-", "")

将其中的‘-’清除掉,得到所要的唯一ID。缺点就是比较长。

以上是关于Hive中生成随机唯一标识ID的方法的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Postgres 9.6+ 中生成长度为 N 的随机、唯一的字母数字 ID?

Hive sql去重

通过Zookeeper学习在分布式系统中生成全局唯一ID

分布式系统中生成全局ID的总结与思考

在 Python 3 中生成具有随机长度的类随机唯一字符串的最快方法

如何在 Python 中生成唯一 ID? [复制]