1. 程式人生 > >Hive中生成隨機唯一標識ID的方法

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。缺點就是比較長。