Hive表创建唯一值和唯一标识


需求:在某一张 hive 表中需要有一列值,作为唯一标识,有些类似于MySQL中的自增ID,(唯一标识取别名时,尽量不要表中现有字段重名)

方法一,唯一标识:

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

 

 也可以正常的 不去掉中间的小“-”线

select reflect("java.util.UUID", "randomUUID")

 

 

方法二,自增值

select row_number() OVER(ORDER BY RAND()) AS sample_key

 

两种方法对比:使用 row_number() 容易发生数据倾斜
使用UUID的方式可以解决数据倾斜,如果在hive表中null的值过多,也可以使用UUID的方法给null赋值,解决数据倾斜的问题


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM