sql >> データベース >  >> RDS >> Mysql

ハイブハッシュ関数の結果が0、null、1になるのはなぜですか?

    ハッシュ関数は、指定されたすべての引数が空白またはnullの場合にのみ0を返します。

    Javaに精通している場合は、ハッシュ関数

    ハッシュ関数は内部でObjectInspectorUtils.hashCodeを使用します 提供されたフィールドの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>
    



    1. SQLで二重バー(||)はどういう意味ですか?

    2. java.sql.SQLException:ORA-01652:表領域TEMPで一時セグメントを128拡張できません(拡張後も)

    3. 文字形式から10進数の数値形式に変換したい

    4. PostgreSQL2つの日時/タイムスタンプの間でランダムな日時/タイムスタンプを取得します