hadoop中的jenkinshash保证了什么?

hadoop中的jenkinshash保证了什么?,hash,hadoop,hashcode,Hash,Hadoop,Hashcode,我知道jenkinshash为给定的值生成一个整数(2^32)。此链接上的文档: 说 返回: 32位的值。键的每一位都会影响返回值的每一位。两个不同于一位或两位的键将具有完全不同的散列值 对于给定的值,jenkinshash最多可以返回2^32个不同的结果。 如果我有超过2^32个值怎么办? 它会为两个不同的值返回相同的结果吗 感谢大多数散列函数,是的,它可能会为不同的输入数据返回重复的散列值。根据您链接到的文档,保证是一个或两个位不同的值是不同的。一旦它们与3位或更多位不同,您就没有唯一性保

我知道jenkinshash为给定的值生成一个整数(2^32)。此链接上的文档:

说 返回: 32位的值。键的每一位都会影响返回值的每一位。两个不同于一位或两位的键将具有完全不同的散列值

对于给定的值,jenkinshash最多可以返回2^32个不同的结果。 如果我有超过2^32个值怎么办? 它会为两个不同的值返回相同的结果吗


感谢大多数散列函数,是的,它可能会为不同的输入数据返回重复的散列值。根据您链接到的文档,保证是一个或两个位不同的值是不同的。一旦它们与3位或更多位不同,您就没有唯一性保证

散列函数的输入数据可能比散列函数的输出更大(具有更多唯一的输入值)。这使得输出数据中必须存在重复项。考虑一个散列函数,它在范围<代码> 1-10中输出一个整数,但是在范围<代码> 1-100中输入:很明显,多个值必须散列到相同的值,因为不能仅使用十个不同的整数枚举值<代码> 1-100。这就是所谓的

但是,任何好的散列函数都会尝试均匀分布输出值。在
1-10
示例中,您可以期望一个好的哈希函数给出的
2
的次数与
6
的次数大致相同

将调用保证唯一性的哈希函数。它们都提供至少与输入数据具有相同基数的输出数据。输入整数
1-100
的完美哈希函数必须至少有100个不同的输出值

请注意,Jenkins散列函数不是加密函数。这意味着您应该避免使用它们,以确保密码安全性等,但您可以使用哈希值进行更均匀的工作分配和校验和