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

Если я запускаю сканирование с использованием фильтра префиксов в оболочке 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 ответ

Решение

Оказывается, это не проблема. Я не выполнял те же команды в оболочке, а остальные 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

Другие вопросы по тегам