0

行 ID の長さが 25 文字のテーブルが hbase にあります。行 ID の長さが短い場合 (約 10)、削減フェーズは行 ID が 25 文字の場合よりも少し速く実行されることがわかりました。そこで、この 25 文字の文字列のハッシュコードを行 ID として使用することを考えました。生成された hascode を hbase テーブルの行 ID として使用してもよろしいですか?

String.hashcode() は整数 (10 億) を返し、私のテーブル レコード数は約 2 億であることに注意してください。

4

2 に答える 2

0

Java の hashcode() 関数は、インスタンス データを使用して 32 ビット整数を生成します。しかし、ほとんどのクラスはこの関数をオーバーライドして、クラス構造に基づいてより適切な拡散を提供します。

Java 1.2 以降、java.lang.String クラスは、文字列のテキスト全体に対して積和アルゴリズムを使用して hashCode() を実装します。

ただし、このアプローチでも、常に衝突の可能性があります。これは、行インデックスの場合に非常に有害であるため、回避する必要があります。

于 2014-11-04T10:14:19.383 に答える