すべてのリージョンから 1 つの行キーを取得する方法はありますか? 私が現在行っている方法は、最初の行キーのすべての領域を順番にスキャンすることですが、それは非常に遅いです。他に良い方法がないか考えてみました。
PS: 各リージョンから 1 つのランダムな行キーが必要な理由を聞かないでください :)
すべてのリージョンから 1 つの行キーを取得する方法はありますか? 私が現在行っている方法は、最初の行キーのすべての領域を順番にスキャンすることですが、それは非常に遅いです。他に良い方法がないか考えてみました。
PS: 各リージョンから 1 つのランダムな行キーが必要な理由を聞かないでください :)
特定のリージョンの開始行キーを取得したい場合は、クラス 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