内置的apache配置单元散列函数是如何工作的?在哪里可以找到这些文档?

sqyvllje  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(418)

我正在使用apachehive,需要确定内置哈希函数是如何工作的。我找到了这个页面 hash 在杂项下。功能部分。上面说 hash 已提供“从Hive0.4起”。
我只想看看它到底在做什么的文档。是确定性的吗?对于相同的输入,它是否总是产生相同的输出?我预计会发生多少次碰撞?

yftpprvb

yftpprvb1#

根据定义,哈希函数是确定性的,参见。https://en.wikipedia.org/wiki/hash_function#determinism
所以如果 hash() 不是确定性的,那么它就是一个bug,有人会注意到的!
警告:该实现可能会发生更改(以及错误修复),因此确定性仅代表给定版本的配置单元。
hive是开源的。按照apache标准,文档还不错,但仍然不完整。只需检查源代码=>https://github.com/apache/hive
例如,对于hive 2.1:
这个 hash() 函数(hive术语中的一个udf)在这里定义
只是打电话而已 ObjectInspectorUtils.getBucketHashCode() 哪个电话 ObjectInspectorUtils.hashCode() 在每个参数上,然后将其散列合并到全局“bucket”散列中-如这里所定义
注解显示,hive实现的(粗略的)散列方法是从 String.hashCode() 有关配置单元中的可选哈希函数,请参阅计算哈希而不使用配置单元中现有的哈希函数,但答案基本上指向已找到的同一文档页。

相关问题