首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HBase中的简单查询

HBase中的简单查询
EN

Stack Overflow用户
提问于 2015-05-02 17:59:30
回答 1查看 634关注 0票数 0

我是HBase的新手。我知道HBase并不等同于关系数据库管理系统。但是,我喜欢在HBase中运行简单的查询,这在关系数据库管理系统中非常简单。我尝试使用扫描和过滤器,但我不知道如何通过使用值得到列。

考虑一下这个简单的MySQL查询:"SELECT username FROM members WHERE email = myname@domain.com

在HBase中,我有一个表名: members。我有两个专栏:用户名和电子邮件。

现在,我想提取用户名,其中电子邮件等于myname@domain.com。

在指定列族和限定符时,我发现了许多可以提取值的示例。但我的情况不同,当我认为在关系数据库管理系统中,这是非常容易的,但我不知道如何在HBase中思考。(我知道有一些SQL包装器可以在HBase上使用SQL,但我希望没有它)。

提前感谢

EN

回答 1

Stack Overflow用户

发布于 2015-05-04 07:39:08

您有两种检索数据的方法:

  • 通过它的行键访问它: GET (快速)
  • 通过扫描部分或所有行:扫描(缓慢)

每个表格单元格的标识如下:

  • 行键+列族+列+时间戳+值

行键可以是任何可以序列化为字节an integer, a string...的内容。

在RDBMS中,您可能有一个电子邮件字段的索引,这样,引擎就可以轻松地找到行的位置,而无需扫描整个表,从而使检索速度更快。

在HBase中没有索引,只有行键。一种常见的技术是去denormalize数据(用不同的行键多次写入数据)或构建手动索引:即考虑将电子邮件的md5存储为行键,列指向真实数据的行键,这样,您就可以通过电子邮件检索数据,并使用2 GET操作(1.询问电子邮件的行键索引表,2.询问用户表中的行键)。

现在,关于您的问题,我认为您正在寻找ValueFilter,它就像SingleColumnValueFilter,但是您不需要提供该列,它将匹配任何列和值。无论如何,我不认为它是一个非常常用的过滤器,在与HBase工作了几年之后,我一直使用SingleColumnValueFilter .

在这里,您可以找到一个很好的过滤器列表:filtering.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30005644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档