我是HBase的新手。我知道HBase并不等同于关系数据库管理系统。但是,我喜欢在HBase中运行简单的查询,这在关系数据库管理系统中非常简单。我尝试使用扫描和过滤器,但我不知道如何通过使用值得到列。
考虑一下这个简单的MySQL查询:"SELECT username FROM members WHERE email = myname@domain.com“
在HBase中,我有一个表名: members。我有两个专栏:用户名和电子邮件。
现在,我想提取用户名,其中电子邮件等于myname@domain.com。
在指定列族和限定符时,我发现了许多可以提取值的示例。但我的情况不同,当我认为在关系数据库管理系统中,这是非常容易的,但我不知道如何在HBase中思考。(我知道有一些SQL包装器可以在HBase上使用SQL,但我希望没有它)。
提前感谢
发布于 2015-05-04 07:39:08
您有两种检索数据的方法:
每个表格单元格的标识如下:
行键可以是任何可以序列化为字节an integer, a string...的内容。
在RDBMS中,您可能有一个电子邮件字段的索引,这样,引擎就可以轻松地找到行的位置,而无需扫描整个表,从而使检索速度更快。
在HBase中没有索引,只有行键。一种常见的技术是去denormalize数据(用不同的行键多次写入数据)或构建手动索引:即考虑将电子邮件的md5存储为行键,列指向真实数据的行键,这样,您就可以通过电子邮件检索数据,并使用2 GET操作(1.询问电子邮件的行键索引表,2.询问用户表中的行键)。
现在,关于您的问题,我认为您正在寻找ValueFilter,它就像SingleColumnValueFilter,但是您不需要提供该列,它将匹配任何列和值。无论如何,我不认为它是一个非常常用的过滤器,在与HBase工作了几年之后,我一直使用SingleColumnValueFilter .
在这里,您可以找到一个很好的过滤器列表:filtering.html
https://stackoverflow.com/questions/30005644
复制相似问题