sql >> Database >  >> RDS >> Mysql

Hive hash-functie resulterend in 0, null en 1, waarom?

De hash-functie retourneert alleen 0 als alle opgegeven argumenten leeg of null zijn.

Als u bekend bent met Java, kunt u de implementatie van hashfunctie .

De hash-functie gebruikt intern ObjectInspectorUtils.hashCode om de hashCode voor de opgegeven velden te krijgen, gebruikt u het onderstaande Java-codefragment om dit probleem handmatig te testen:

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-afhankelijkheden vereist om bovenstaand programma uit te voeren:

<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. Vertraagt ​​het toevoegen van externe tabellen in een WITH-clausule een query in PostgreSQL?

  2. PERIOD_ADD() Voorbeelden – MySQL

  3. Resource-id #10 als ik een variabele wil echoën met php en mysql

  4. MySQL-trigger voordat updatekolom wordt ingevoegd met nieuwe auto-increment-id