0

すべてのリージョンから 1 つの行キーを取得する方法はありますか? 私が現在行っている方法は、最初の行キーのすべての領域を順番にスキャンすることですが、それは非常に遅いです。他に良い方法がないか考えてみました。

PS: 各リージョンから 1 つのランダムな行キーが必要な理由を聞かないでください :)

4

1 に答える 1

0

特定のリージョンの開始行キーを取得したい場合は、クラス HRegionが提供するpublic byte[] getStartKey()を試してください。

または、現在開いているテーブルのすべての領域の開始行キーを取得する場合は、クラス HTableで利用可能なpublic byte[][] getStartKeys()を使用できます。

編集 :

HRegionInfo が提供するpublic byte[] getStartKey()を試してください(個人的にテスト済み)。

4 つの領域を持つ TestTable というテーブルがあり、2 番目の領域の開始キーは 0001617355 です。下の図を参照してください。

ここに画像の説明を入力

そして、もしそうなら:

System.out.println("Key as String : " + Bytes.toString(HRegionInfo.getStartKey(Bytes.toBytes("TestTable,0001617355,1375740446704.68797fdaa6410c7f21d09444d649758c."))));

この地域では、次のことがわかります。

文字列としてのキー: 0001617355

これはあなたが必要とするものですか?

(HTable と HRegion を介してそれを達成する方法があるはずだと思います。それを試してお知らせします)。

HTH

于 2013-08-03T21:00:23.403 に答える