内置的HASH()函数使用哪种哈希算法?
我理想地是在寻找SHA512/SHA256哈希,类似于SHA()函数在Pig的linkedin datafu UDF中提供的功能。
最佳答案
HASH
函数(从Hive 0.11开始)使用类似于java.util.List#hashCode的算法。
其代码如下所示:
int hashCode = 0; // Hive HASH uses 0 as the seed, List#hashCode uses 1. I don't know why.
for (Object item: items) {
hashCode = hashCode * 31 + (item == null ? 0 : item.hashCode());
}
基本上,这是有效Java一书中推荐的经典哈希算法。
引用一个伟人(和一个伟大的book):