RowFilter с запросом сканирования в HBase - PullRequest
0 голосов
/ 26 июня 2019

У меня есть следующая таблица в HBase;

---row---                       ---columns---
15678,ctx,plm,1561356310000         etc...
15678,ctx,plm,1561388710000         etc...
15678,ctx,plm,1561476430000         etc...
26355,yt,rcc,1561356310000          etc...
26355,yt,rcc,1561356310000          etc...
...                                 ...

Мой rowKey формат:

<id_of_device>,<id_of_component>,<id_of_item>,<timestamp>

И я получил неожиданный запрос. Я должен получить все значения конкретного устройства (id_of_device) между определенным временем начала и временем окончания (отметками времени в строке) .


Например; Я хочу получить данные устройства 15678 между startTime(1561356310000) и endTime(1561476430000). Как я могу подготовить запрос сканирования для этого? В соответствии с моим дизайном rowKey я пишу "id_of_component" and "id_of_item". Но я хочу получить данные, используя только "id_of_device" and "start and end timestamps".

scan 'mytable', {STARTROW => '15678,..,..,1561356310000', ENDROW => '15678,..,..,1561476430000'}

1 Ответ

1 голос
/ 26 июня 2019

в соответствии с вашим дизайном ключа строки;Вы можете использовать RowFilter с регулярным выражением рядом с начальными и конечными строками.

scan 'mytable', {STARTROW => '15678', ENDROW => '15679', FILTER => "RowFilter(=, 'regexstring:1561356310000$')"}

получит данные в точное время 1561356310000. Если вы создадите регулярное выражение метки времени в соответствии с вашим диапазоном дат, вы можете запросить временной диапазон.

scan 'mytable', {STARTROW => '15678', ENDROW => '15679', FILTER => "RowFilter(=, 'regexstring:15613563.....$')"}

получит 100 секундданных между временными метками 1561356300000 и 1561356399999

scan 'mytable', {STARTROW => '15678', ENDROW => '15679', FILTER => "RowFilter(=, 'regexstring:1561356[3|4|5].....$')"}

получит 300 секунд данных между временными метками 1561356300000 и 1561356599999

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

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