Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Hàm băm Hive dẫn đến 0, null và 1, tại sao?

Hàm băm chỉ trả về 0 khi tất cả các đối số được cung cấp đều trống hoặc rỗng.

Nếu bạn đã quen với Java thì bạn có thể kiểm tra việc triển khai hàm băm .

Hàm băm sử dụng nội bộ ObjectInspectorUtils.hashCode để lấy mã băm cho các trường được cung cấp, hãy sử dụng đoạn mã java bên dưới để kiểm tra thủ công vấn đề này:

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) );
    }
}

Yêu cầu phụ thuộc Maven để chạy chương trình trên:

<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>



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL - tự động bổ sung thành phần hướng dẫn

  2. Sử dụng trường ngày được lưu trữ để tính toán trường tính số ngày hiện tại đã trôi qua

  3. Mệnh đề MySQL IN có thực thi truy vấn con nhiều lần không?

  4. Hoạt động tập hợp con MYSQL

  5. Làm cách nào để sử dụng COALESCE () trong mệnh đề WHERE một cách tối ưu?