首页 > 解决方案 > 内置的 Apache Hive 哈希函数是如何工作的,我在哪里可以找到该文档?

问题描述

我正在使用 Apache Hive,需要确定内置哈希函数的工作原理。我找到了在杂项下列出的这个页面。功能部分。它说“截至 Hive 0.4”已经可用。hashhash

我只想看一些关于它到底在做什么的文档。它是确定性的吗?给定相同的输入,它总是会产生相同的输出吗?我应该期待多少次碰撞?

标签: hashhivemapreduce

解决方案


根据定义,哈希函数是确定性的,参见。https://en.wikipedia.org/wiki/Hash_function#Determinism
所以如果实现hash()不是确定性的,那么这将是一个错误,有人会注意到!

警告:该实现可能会发生变化(和错误修复),因此确定性仅代表给定版本的 Hive。


Hive 是开源的。按照 Apache 标准,文档还不错,但仍然不完整。只需检查源代码 => https://github.com/apache/hive

以 Hive 2.1 为例:

  • hash()函数(Hive 术语中的 UDF)此处定义
  • 它只是调用ObjectInspectorUtils.getBucketHashCode()which 调用ObjectInspectorUtils.hashCode()每个参数,然后将其散列合并到全局“桶”散列中 - 如此处所定义
  • 一条评论显示 Hive 实现的(粗)散列方法源自String.hashCode()


有关 Hive 中的替代散列函数,请参阅在 Hive 中不使用现有散列函数计算散列,但答案基本上指向您已经找到的相同文档页面。


推荐阅读