Оболочка HBase почти в 100 раз быстрее конечной точки для префиксного фильтра - PullRequest
0 голосов
/ 05 октября 2018

Если я запускаю сканирование с использованием фильтра префиксов в оболочке HBase, я получаю ответ менее чем за 1 секунду, независимо от того, что я использую для префикса.(0 против 9 или «a» против «z» не имеет значения в скорости ответа).

Однако, когда я делаю тот же запрос из библиотеки Microsoft HBase (в C #), он может занять до90 секунд, чтобы получить ответ.Интересно, что если я выберу префикс ближе к 0, он будет быстрее, чем дальше я перейду с 0, тем дольше это займет.(«a» быстрее, чем «f» в качестве фильтра префиксов).

Не уверен, как определить, что оболочка делает иначе, чем запрос restful или как сделать запрос restful более производительным.

Некоторые детали:

  • В этой таблице чуть более 20 000 000 записей
  • Ключ строки задан как [guid] _ [обратная временная метка], например, a6fc9620-5ff0-41c0-9ed9-660bc3fbb65c_9223370501253811889

Есть мысли о том, что мне следует искать или пытаться улучшить запрос остальных API?

1 Ответ

0 голосов
/ 09 октября 2018

Оказывается, это не проблема.Я не выполнял те же команды в оболочке, что и остальные API, как я думал.

В остальных API я давал два фильтра, фильтр страниц и фильтр префиксов.

На оболочке HBase я выполнял

scan 'beacon', {STARTROW => 'ff', FILTER => "PageFilter(25)"}

STARTROW - это не то же самое, что фильтр префиксов.На самом деле он выполняет нечто большее, чем установка полного начального ключа строки, и, следовательно, делает сканирование производительным, поскольку оно не пересекает всю таблицу.

Оказывается, это то, что я должен был сделать в вызове остальных APIтоже.Когда я устанавливаю начальную и конечную строку в дополнение к фильтру префикса и фильтру страницы, он работает быстро и как ожидалось.

https://community.hortonworks.com/articles/55204/recommended-way-to-do-hbase-prefix-scan-through-hb.html

Должен ли я использовать префиксный фильтр или диапазон ключей строкисканирование в HBase

...