繁体   English   中英

Hbase行过滤不起作用

[英]Hbase Row filtering doesn't work

我有一个Hbase表,其中的行键如下所示

        12345678912:::timestamp:::1234567891:::john         cf:somedata
        12345678912:::timestamp:::1234567891:::smith        cf:somedata
        12345678912:::timestamp:::1234567891:::lotta        cf:somedata

现在,我想使用行键正则表达式过滤掉一些行,如下所述

scan 'mytable', {STARTROW=>'.*:::starttimestamp:::.*:::john', STOPROW=>'.*:::endtimestamp:::.*:::john'}

但这似乎也不起作用,而且我了解某些研究无法在行键中使用正则表达式。

如何在HBase Shell中使用FuzzyRowFilter进行此操作? 这个过滤器真的对我有帮助吗?

我知道我可以对特定行使用SingleColumnValue筛选器,但我的行键对我也很重要。

您需要对行键进行范围扫描。 看起来,范围适用于整个字符串。 例如,以下工作。

scan 'scanRangeTest',{STARTROW=>'1234|20-10-2014|john', STOPROW=>'1234|24-10-2014|john'}

您将获得两个时间戳之间的john的所有记录。 这里的关键是您应该构建开始和停止参数。

有一个正则表达式比较器。 您可以将其与RowKey筛选器一起使用。 请参考这里 但是,当您以这种方式使用正则表达式时,将获得所有匹配的记录,但不会提供范围选项,这对您可能很重要。

上面的“带有正则表达式比较器的行过滤器”的替代方法是二级索引和FuzzyRowFilter 这些有助于通过跳过某些记录来加快扫描速度。 但是,范围选项仍然不存在。 因此,您可以根据需要接听电话。

解决您的问题

获取日期范围,并获取特定的用户名(john)和一些ID(12345678912、1234567891)。 在我的扫描命令中,范围仅适用于全行键,而不适用于正则表达式。 因此,只要您具有名称和ID的通用性(您可以照常获取此参数),然后仅更改时间戳(您可以将其添加为您的要求),然后使用这三个参数,构建整个行键,然后可以使用开始和停止行。 希望我已清除您的要求。

create 'scanRangeTest', {NAME => 'srt', REPLICATION_SCOPE => '1'}
put 'scanRangeTest','1234|20-10-2014|john', 'srt:name','John Details'
put 'scanRangeTest','1235|21-10-2014|smita', 'srt:name','Smita Details'
put 'scanRangeTest','1236|22-10-2014|lotta', 'srt:name','Lotta Details'
put 'scanRangeTest','1234|23-10-2014|john', 'srt:name','John Details sec timestamp'
put 'scanRangeTest','1237|23-10-2014|john', 'srt:name','Ram Details'

scan 'scanRangeTest',{STARTROW=>'1234|20-10-2014|john', STOPROW=>'1234|24-10-2014|john'}

Output
ROW                                      COLUMN+CELL
 1234|20-10-2014|john                    column=srt:name, timestamp=1446045032763, value=John Details
 1234|23-10-2014|john                    column=srt:name, timestamp=1446045054544, value=John Details sec timestamp

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM