Как получить последний ключ / значение фильтра rowpefix в hbase? - PullRequest
0 голосов
/ 04 июля 2018

Мой ключ строки таблицы 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

Спасибо!

...