Кто выполняет фильтры HBase? - PullRequest
0 голосов
/ 10 мая 2018

Какая машина выполняет org.apache.hadoop.hbase.filter.Filter?

Согласно документации , при чтении данных из HBase с использованием операций Get или Scan вы можете использовать пользовательские фильтры для возврата подмножества результатов клиенту.Хотя это не уменьшает количество операций ввода-вывода на стороне сервера, оно уменьшает пропускную способность сети и уменьшает объем данных, необходимых клиенту для обработки.

Из того, что я вижу, машина spark executor делает удаленные вызовы в фоновых потоках клиента hbase для запроса данных HBase.И эти вызовы редко выполняются на сервер региона hbase локальной машины.

Так что я задаюсь вопросом, выполняется ли мой пользовательский фильтр на машине-исполнителе Spark, с огромными сетевыми издержками, что противоречит тому, что заверяет документация, или он каким-то образом передается по сети и выполняется на машине HBase?
Idoute, так как фильтр не сериализуем.Поэтому следующий вопрос: можно ли здесь что-то оптимизировать?

1 Ответ

0 голосов
/ 11 мая 2018

Фильтр выполнен в процессе сервера региона.HBase может загружать его динамически, если вы поместите JAR-файл с его кодом в каталог, указанный в конфигурации HBase параметром hbase.dynamic.jars.dir.Интерфейс фильтра не реализует интерфейс Serializable, но у него есть метод

static Filter    parseFrom(byte[] pbBytes)

, который создает фильтр из сериализованной формы.В классе FilterBase, который следует использовать для создания пользовательского фильтра, существует метод

abstract byte[] toByteArray()

для сериализации фильтра в байтовый массив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...