Welcher Hash-Algorithmus wird für die integrierte HASH () - Funktion von Hive verwendet?

8

Welche Art von Hash-Algorithmus wird in der integrierten HASH () - Funktion verwendet?

Ich suche idealerweise nach einem SHA512 / SHA256-Hash, ähnlich dem, was die SHA () - Funktion innerhalb der Linkedin-Datafu-UDFs für Pig bietet.

    
user1152532 17.01.2014, 02:09
quelle

1 Antwort

19

HASH function (ab Hive 0.11) verwendet einen ähnlichen Algorithmus wie java.util.List # hashCode .

Der Code sieht so aus:

%Vor%

Grundsätzlich ist es ein klassischer Hash-Algorithmus, wie er im Buch Effective Java empfohlen wird. Um einen großen Mann (und ein großes Buch ) zu zitieren:

  

Der Wert 31 wurde gewählt, weil es eine ungerade Primzahl ist. Wenn es so wäre   und die Multiplikation übergelaufen, Information würde verloren gehen, als   Multiplikation mit 2 entspricht der Verschiebung. Der Vorteil der Verwendung   Ein Prime ist weniger klar, aber es ist traditionell. Eine nette Eigenschaft von 31 ist   dass die Multiplikation durch eine Verschiebung und eine Subtraktion ersetzt werden kann   für eine bessere Leistung: 31 * i == (i & lt; & lt; 5) - i. Moderne VMs tun dies   Art der Optimierung automatisch.

Ich schweife ab. Sie können sich die Quelle HASH ansehen hier .

Wenn Sie SHAxxx in Hive verwenden möchten, können Sie Apache DigestUtils Klasse und Hive integrierte reflect Funktion (ich hoffe, dass es funktioniert):

%Vor%     
Nigel Tufnel 17.01.2014, 11:08
quelle

Tags und Links