Мой ключ строки таблицы hbase имеет следующий формат:
vin1ts1
vin1ts2
vin1ts3
vin2ts1
vin2ts2
vin2ts3
vin2ts4
etc....
Я хотел бы получить последний доступный ключ каждого ROWPREFIX,
где ROWPREFIX = {VIN1, VIN2, VIN3, ...}
Пример: для RowPrefix = VIN1, должно возвращаться «Rowkey = vin1ts3» и его значения.
Я пытаюсь использовать функцию обратного сканирования, как показано ниже:
`Scan scan = new Scan();
scan.setCaching(1)
FilterList allFilters = new FilterList(FilterList.Operator.MUST_PASS_ALL);
allFilters.addFilter(new PrefixFilter(Bytes.toBytes(prefixFilterValue)));
scan.setFilter(allFilters);
scan.setReversed(true); //Read the latest available key and value
scan.setMaxResultSize(1);
ResultScanner scanner = tblConn.getScanner(scan);
Result result = scanner.next();
LOGGER.log(Level.INFO, "Latest Key " + Bytes.toString(result.getRow()));
scanner.close();
-----------`
Приведенный выше код работает, но для получения целевого ключа строки требуется ~ 40 секунд.
Есть ли лучший способ получить то же самое, поскольку 40 секунд не удовлетворяют нашим условиям бизнеса?
Или мне нужно установить какое-либо свойство сканирования, чтобы сократить время сканирования?
Любые указатели будут оценены ..
Информация о CLUSER:
HDP:
HDP-2.5.5.0
hbase -version:
Версия 1.1.2.2.5.5.0-157, r002c801447187c620c26ffc130ff17a9b0a62ac1, пт 21 апреля 01:13:10 UTC 2017
Спасибо!