将第一行的密钥存储在某处。它会始终存在于您的最终结果集中,作为“第一”行,这使得它比所有其他行都旧(我正确吗??)
现在获取日期,您要使用它来过滤结果并使用该日期创建一个带有 RegexStringComparator 的 RowFilter。这将给出匹配指定条件的行。现在,使用您之前存储的这一行和第一行进行范围查询。
如果您有多行具有相同的日期,请说:
10,2012-05-04,"some details"
10,2012-05-04,"some new details"
取最后一行,你会在 RowFilter 之后得到,并使用相同的技术。
高温高压
我想说你可以使用范围查询来实现这一点。其中“startrowkey”将是表格的第一行。作为第一行,它将始终是最旧的行,这意味着您的结果中将始终包含这一行。范围查询的“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
}