sql >> Databáze >  >> RDS >> Mysql

Hive hash funkce, která má za následek 0, null a 1, proč?

Hašovací funkce vrací 0 pouze v případě, že jsou všechny zadané argumenty prázdné nebo null.

Pokud jste obeznámeni s Javou, můžete zkontrolovat implementaci hashovací funkce .

Hašovací funkce interně používá ObjectInspectorUtils.hashCode Chcete-li získat hashCode pro dodaná pole, použijte níže uvedený fragment kódu Java k ručnímu testování tohoto problému:

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

Závislosti Maven potřebné ke spuštění výše uvedeného programu:

<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. Automatické generování ID v Spring MVC

  2. Envers + MYSQL + List<String> =SQLSyntaxErrorException:Zadaný klíč byl příliš dlouhý;

  3. MySQL vytvoří databázi, pokud neexistuje

  4. Spojte několik polí do jednoho pomocí SQL