1
各範囲に対してバッチスキャンを使用して最初のn行全体を取得する方法はありますか?範囲ごとの制限があるバッチスキャナ
複数のユーザーに対して最新のユーザー操作をプルして、1人のユーザーあたり100行全体を表示したいと考えています。行キーは、ユーザーIDとタイムスタンプの後に始まります。
おかげで、
デヤン
各範囲に対してバッチスキャンを使用して最初のn行全体を取得する方法はありますか?範囲ごとの制限があるバッチスキャナ
複数のユーザーに対して最新のユーザー操作をプルして、1人のユーザーあたり100行全体を表示したいと考えています。行キーは、ユーザーIDとタイムスタンプの後に始まります。
おかげで、
デヤン
デヤンは - WholeRowIteratorを見てみましょう。どのように使用するかのコード例をいくつか示します。かなり近いですが、あなたは最初のN行をしたい場合は、あなたの代わりにスキャナをお勧めします
Connector conn = getConnector();
BatchScanner bs = conn.createBatchScanner("mytable", new Authorizations(), 4);
IteratorSetting iterator = new IteratorSetting(100, WholeRowIterator.class);
bs.addScanIterator(iterator);
for (Entry<Key,Value> entry : bs) {
SortedMap<Key,Value> row = WholeRowIterator.decodeRow(entry.getKey(), entry.getValue());
}
:スキャナBS = conn.createScanner()、「mytableは」新しい権限(); N行だけが必要な場合は、bs.setBatchSize(N)を使用することもできます。 – billie
ああ、良い点! BatchScannerを使用して問題が発生する可能性は考えていませんでした。 BatchScannerの代わりにScannerを使用すると、最新の100個のレコードが確定します(最新の行が最初にソートされるテーブルの一部) – elserj
パフォーマンス上の理由からBatchScannerを使用したいと考えています。私は複数のユーザーのために最初の100の結果を得る必要があります。スキャナでは、その時点で1人のユーザーが収集されます。もちろん、Scannerを使用してデータを収集するためにいくつかのスレッドを作成できます。 BatchScannerを使用することでさらに複雑さを避けることを望んでいました。 – dejan