内置的 Apache Hive 哈希函数是如何工作的,我在哪里可以找到该文档?
How does the built-in Apache Hive hash function work and where can I find that documentation?
我正在使用 Apache Hive,需要确定内置哈希函数的工作原理。我发现 this 页面在 杂项下列出了 hash
。函数 部分。它说 hash
已可用 "As of Hive 0.4"。
我只想查看有关其具体功能的一些文档。它是确定性的吗?给定相同的输入,它总是会产生相同的输出吗?我应该期待多少次碰撞?
根据定义,哈希函数是确定性的,参见。 https://en.wikipedia.org/wiki/Hash_function#Determinism
因此,如果 hash()
的实现不是确定性的,那么它就是一个错误,并且有人会注意到!
警告:该实现可能会发生变化(和错误修复),因此确定性仅代表给定版本的 Hive。
Hive 是开源的。按照 Apache 标准,文档还不错,但仍然不完整。只需检查源代码 => https://github.com/apache/hive
例如对于 Hive 2.1:
- 定义了
hash()
函数 (Hive 术语中的 UDF) here
- 它只是调用
ObjectInspectorUtils.getBucketHashCode()
,它在每个参数上调用 ObjectInspectorUtils.hashCode()
,然后将它的散列合并到一个全局 "bucket" 散列中——定义为 here
- 评论显示 Hive 实现的(粗略的)散列方法源自
String.hashCode()
有关 Hive 中的替代哈希函数,请参阅 Calculate hash without using exisiting hash fuction in Hive,但答案基本上指向您已找到的同一文档页面。
我正在使用 Apache Hive,需要确定内置哈希函数的工作原理。我发现 this 页面在 杂项下列出了 hash
。函数 部分。它说 hash
已可用 "As of Hive 0.4"。
我只想查看有关其具体功能的一些文档。它是确定性的吗?给定相同的输入,它总是会产生相同的输出吗?我应该期待多少次碰撞?
根据定义,哈希函数是确定性的,参见。 https://en.wikipedia.org/wiki/Hash_function#Determinism
因此,如果 hash()
的实现不是确定性的,那么它就是一个错误,并且有人会注意到!
警告:该实现可能会发生变化(和错误修复),因此确定性仅代表给定版本的 Hive。
Hive 是开源的。按照 Apache 标准,文档还不错,但仍然不完整。只需检查源代码 => https://github.com/apache/hive
例如对于 Hive 2.1:
- 定义了
hash()
函数 (Hive 术语中的 UDF) here - 它只是调用
ObjectInspectorUtils.getBucketHashCode()
,它在每个参数上调用ObjectInspectorUtils.hashCode()
,然后将它的散列合并到一个全局 "bucket" 散列中——定义为 here - 评论显示 Hive 实现的(粗略的)散列方法源自
String.hashCode()
有关 Hive 中的替代哈希函数,请参阅 Calculate hash without using exisiting hash fuction in Hive,但答案基本上指向您已找到的同一文档页面。