Hbase FuzzyRowFilter, как работает переключение клавиш

Я знаю, что фильтр нечетких строк принимает два параметра: сначала ключ строки, а второй - нечеткую логику. Что я понял из соответствующего класса Java FuzzyRowFilter, так это то, что фильтр оценивает текущую строку и пытается вычислить следующий более высокий ключ строки, который будет соответствовать нечеткой логике, и он пропускает несовпадающие ключи.

Я не могу понять следующие вещи

Как сканирование перескакивает через определенные клавиши строки? Использует ли он Get для получения и сравнения текущего ключа строки. Как сканировать, чтобы узнать, где существует следующий соответствующий ключ строки? без полного сканирования(если скачет)


person Vikram Singh Chandel    schedule 03.02.2014    source источник


Ответы (2)


Вы все правильно поняли.

Для тех, кто пришел сюда из веб-поиска, вот две ссылки, которые объясняют, как можно использовать пропуск строк в целом и как это делается в FuzzyRowFilter, в частности.

  1. HBase FuzzyRowFilter: альтернатива Дополнительные индексы
  2. Фильтры в HBase (или сканирование внутри строки, часть II)< /а>

Если фильтр знает, что он находится на последнем ключе и нуждается в пропуске:

  1. Фильтр возвращает SEEK_NEXT_USING_HINT
  2. Региональный сервер вызывает getNextCellHint который возвращает предложенный Cell
  3. Region Server performs exactly same routine of finding a key as it did for the first key in scan - it examines available HFiles checking if the key in question is there
    1. Region Server reads the "trailer" section of each file to get offsets of metadatablocks
    2. Региональный сервер считывает типы блоков метаданных Meta и FileInfo, чтобы избежать чтения двоичных данных из hfile, если нет шансов, что ключ присутствует (фильтр Блума), если файл слишком старый (Max SequenceId) или если файл слишком новый ( Timerange), чтобы содержать то, что мы ищем. Подробнее о формате HFile
    3. Если ключ находится внутри HFile, Region Server использует сегменты индекса DataBlock для вычисления смещения относительно расположения блока данных с рассматриваемым ключом.
    4. если блок данных с ключом уже находится в кеше блоков Region Server, следующий шаг пропускается
    5. Блок данных читается из HFile
    6. Региональный сервер, наконец, сканирует ключи один за другим, пока не наткнется на целевой.
  4. Найденный ключ и, возможно, вся строка (в зависимости от фильтра) передаются в код фильтра.
  5. Весь цикл повторяется
person Igor Katkov    schedule 18.02.2014

Первое, что нужно знать о ключах hbase, это то, что они хранятся в лексикографически отсортированном порядке, эти данные сохраняются мастером hbase в метафайле. Таким образом, когда применяется нечеткий фильтр строк, он может напрямую пропускать все значения, которые не соответствуют ключу строки.

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

например. если ваш диапазон ключей строк равен 123456689 - 123456889, то ваш фильтр нечетких строк будет 123456???. Здесь происходит то, что фильтр нечетких строк пропускает строку, начинающуюся с 123456, диапазон фильтра нечетких строк будет следующим: 123456000 - 123456999

person Jijo    schedule 18.02.2014