sql >> Database teknologi >  >> RDS >> Mysql

Hive hash funktion resulterer i 0,null og 1, hvorfor?

Hash-funktionen returnerer kun 0, når alle angivne argumenter er tomme eller null.

Hvis du er fortrolig med Java, kan du tjekke implementeringen af ​​hash-funktion .

Hash-funktionen bruger internt ObjectInspectorUtils.hashCode for at få hashkoden til de medfølgende felter, brug nedenstående java-kodestykke til at teste dette problem manuelt:

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-afhængigheder kræves for at køre ovenstående program:

<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. Problemer med ydelse af PostgreSQL/JooQ masseindsættelse ved indlæsning fra CSV; hvordan forbedrer jeg processen?

  2. Parser til Oracle SQL

  3. Fra XML til liste over stier i Oracle 12c

  4. Sådan eksporteres resultaterne af en forespørgsel ved hjælp af MySQL Workbench