gpt4 book ai didi

mysql - Hive 哈希函数结果为 0、null 和 1,为什么?

转载 作者:行者123 更新时间:2023-11-29 20:41:37 24 4
gpt4 key购买 nike

我正在使用 hive 0.13.1 并使用默认的 hive 哈希函数对 key 组合进行哈希处理。

类似的东西 从表1中选择哈希(日期, token 1, token 2,参数[“a”],参数[“b”],参数[“c”]);

我在 150M 行上运行了它。对于 60% 的行,它正确地进行了哈希处理。对于其余行,它给出 0.null 或 1 作为哈希值。我查看了导致错误哈希的行,我没有发现这些行有任何问题。可能是什么原因造成的?

最佳答案

仅当所有提供的参数均为空或 null 时,哈希函数才返回 0。

如果您熟悉Java,那么您可以检查 hash function 的实现.

哈希函数内部使用ObjectInspectorUtils.hashCode来获取所提供字段的hashCode,使用下面的java代码片段手动测试此问题:

import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorUtils;
import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory;
import org.apache.hadoop.io.Text;
public class TestHash
{
public static void main( String[] args )
{
System.out.println( ObjectInspectorUtils.hashCode(null,PrimitiveObjectInspectorFactory.javaStringObjectInspector) );
System.out.println( ObjectInspectorUtils.hashCode(new Text(""),PrimitiveObjectInspectorFactory.javaStringObjectInspector) );
}
}

运行上述程序所需的 Maven 依赖项:

<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-exec</artifactId>
<version>2.1.0</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.7.2</version>
</dependency>

关于mysql - Hive 哈希函数结果为 0、null 和 1,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38617437/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com