僅當所有提供的參數爲空或空時,哈希函數才返回0。
如果您熟悉Java,那麼您可以檢查執行hash function。
散列函數在內部使用ObjectInspectorUtils.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>
也許你可以提供一個沒有做到你想要的哈希的例子。它現在很難回答這個問題。 – gobrewers14