我在HBase中有下表;
ng build --prod
我的---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_device>,<id_of_component>,<id_of_item>,<timestamp>
和15678
之间的设备startTime(1561356310000)
的数据。我该如何准备扫描查询?根据我的rowKey设计,我写了endTime(1561476430000)
。但是我只想使用"id_of_component" and "id_of_item"
来获取数据。
"id_of_device" and "start and end timestamps"
答案 0 :(得分:1)
根据您的行键设计;您可以在开始和停止行旁边使用带有正则表达式的RowFilter。
scan 'mytable', {STARTROW => '15678', ENDROW => '15679', FILTER => "RowFilter(=, 'regexstring:1561356310000$')"}
将在1561356310000的准确时间获取数据。如果根据日期范围创建时间戳正则表达式,则可以查询时间范围。
scan 'mytable', {STARTROW => '15678', ENDROW => '15679', FILTER => "RowFilter(=, 'regexstring:15613563.....$')"}
在时间戳1561356300000和1561356399999之间将获得100秒的数据
scan 'mytable', {STARTROW => '15678', ENDROW => '15679', FILTER => "RowFilter(=, 'regexstring:1561356[3|4|5].....$')"}
将在时间戳1561356300000和1561356599999之间获得300秒的数据
使用正则表达式过滤器可能不是很有效,但是行键中间的id_of_component,id_of_item
数据会阻止使用范围扫描的功能。