Сканирование HBase на основе определенных файлов HFile в качестве корней - PullRequest
0 голосов
/ 14 февраля 2019

Существует ли какой-либо API-интерфейс сканирования / фильтрации со следующим поведением?

Учитывая диапазон времени, я бы хотел, чтобы сканер включал данные из HFiles вне диапазона для ключей строк, включенных в HFiles, которые находятся в диапазоне,Идея состоит в том, чтобы сканировать индексы в памяти всех файлов HFiles, но получать данные с диска только для ключей строк из файлов HFiles, находящихся в диапазоне.

Например, если HFile1 находится в диапазоне, а HFile2 отсутствуетдиапазона, и rowkey1 имеет любые данные в HFile1, я хотел бы также получить все столбцы rowkey1 из HFile2, как если бы они были в диапазоне.С другой стороны, если rowkey2 включен в HFile2, но не в HFile1, сканер индекса должен просто перейти к следующему ключу строки.

Вариант использования - загрузить весьстроки , которые были изменены (даже в одном столбце) в течение последних X часов, избегая полного сканирования или любого сканирования диска избыточных данных.Это будет интегрировано в приложения Spark / MR, вероятно, основанные на TableSnapshotInputFormat, поэтому, я думаю, я мог бы доставить некоторый пользовательский код для HRegion, HStore или чего-либо еще, если это произойдет.

Большое спасибо

1 Ответ

0 голосов
/ 27 февраля 2019

Если это вариант использования,

Вариант использования - загрузка целых строк, которые были изменены (даже в одном столбце) за последние X часов, избегая полного сканирования или сканирования диска.избыточных данных

Почему сканирование с диапазоном меток времени не будет работать?HBase JAVA API org.apache.hadoop.hbase.client.Scan.setTimeRange(long, long) принимает в качестве входного временной диапазон и выбирает строки, которые были изменены только в этом временном диапазоне.

Если вы хотите, чтобы он был более гибким, примените KeyOnlyFilter() и получите все ключи для строк.Позже вы можете сделать пакет Get на основе количества строк.

...