最初の行のキーをどこかに保存します。それは常に最終的な結果セットにあり、「最初の」行であるため、他のすべての行よりも古くなります(正しいですか??)
結果を除外するために使用する日付を取得し、この日付を使用して RegexStringComparator で RowFilter を作成します。これにより、指定された基準に一致する行が得られます。ここで、この行と、以前に保存した最初の行を使用して、範囲クエリを実行します。
同じ日付の行が複数ある場合は、次のように言います。
10,2012-05-04,"some details"
10,2012-05-04,"some new details"
RowFilter の後に取得する最後の行を取得し、同じ手法を使用します。
HTH
これを達成するために範囲クエリを使用できると言おうとしていました。「startrowkey」はテーブルの最初の行になります。最初の行であるため、常に最も古い行になります。つまり、結果には常にこの行が含まれます。範囲クエリの「stoprowkey」は、指定された日付を含む行になります。stoprowkey を見つけるには、「RegexStringComparator」で「RowFilter」を設定できます。
byte[] startRowKey = FIRST_ROW_OF_THE_TABLE;
Scan scan = new Scan();
Filter rowFilter = new RowFilter(CompareFilter.CompareOp.EQUAL,new RegexStringComparator("YOUR_REGEX"));
scan.setFilter(filter);
ResultScanner scanner1 = table.getScanner(scan);
for (Result res : scanner1) {
byte[] stopRowKey = res.getRow();
}
scanner1.close();
scan.setStartRow(startRowKey);
scan.setStopRow(stopRowKey);
ResultScanner scanner2 = table.getScanner(scan);
for (Result res : scanner2) {
//you final result
}