全部产品

数据查询

更新时间:2019-06-26 19:52:51

在开发调试,或者在生产运维过程中,往往需要去HBase中查询某条数据。除了使用了HBase shell来写Get、Scan请求。HBase增强版还在集群管理系统中提供了一个简单的SQL查询入口。用户可以使用熟悉的SQL语法来查询HBase的表。

从集群管理系统中的SQL查询页面可以进入数据查询系统。在使用前,先要选择要查询的表所在namespace。选中了namespace后,会在页面右边的树形结构中列出这个namespace里所有的表。点击表名可以显示这个表的schema, ROW代表RowKey, COL是预置的列名。用户可以方便地根据这个表的schema来构造select请求。

一、简单入门

一个典型的SQL查询交互过程如下:

  1. 首先选择一个namespace,例如 'default'
  2. 在页面右侧中查看您需要查询的表结构
  3. 在编辑器中输入您的SQL
  4. 点击上面的 '执行' 按钮,或者通过键盘输入 'contrl+enter'(Windows)/'command+return' (MacOS) 来执行
  5. 查看编辑器下方的结果表格,如果执行出错,在此处也可看见错误详情

页面操作过程如下图所示:

SQL查询

注意:集群管理系统的SQL查询页面不支持use namespace语法,只能通过左上角的namespace列表选择/切换namespace。

二、使用说明

在您执行SQL前,请您务必先阅读下面的几点重要说明,能有效解决您使用时可能遇到的问题或疑惑:

  1. 本系统只支持 'SELECT' 查询语句,如果需要变更数据操作,需要通过命令行或者使用产品提供的api自行开发应用。
  2. 为确保数据安全,本系统没次查询仅返回最多100条数据。
  3. 对所有varbinary类型的字段进行条件查询时,必须使用HexCode编码的字符串作为value
  4. 'ROW' 字段对应 HBase rowkey'ROW' 'qualifier' 都是 'varbinary' 类型,'qualifier' 如果不属于 family 'f' 则需要指定 family,例如: 'select `ROW`, q1, `f1:q2` from ...'
  5. 'ROW' 'COL' SQL 保留字,查询时需要加反引号;'qualifier' 指定 family 时也需要加反引号。

三、Binary 编码字符与 HexCode 编码字符的转换

HBase内部使用 byte[] 的形式存储数据,在 SQL查询 页中返回的查询结果中,varbinary 类型的字段以 HBase BinaryString 的编码形式展示的。

在 varbinary 类型的字段进行条件查询时(即 where 子句中包含如 rowkey 等字段),必须使用 HexCode 编码的字符作为查询条件的 value。例如:查询 rowkey 为 r1 数据,则SQL查询中的 where 子句应该写成 where rowkey='7321'(注:字符串r1的HexCode编码字符为7321)。

为方便用户在查询时进行编码转换,系统在 SQL查询 页面中提供了一个简单的转换工具,只需将您的 Binary 编码字符串输入转换框中,即可在SQL编辑器内看到该字符串相应的 HexCode编码。详情如下图所示:

HexCode转码

如果用户想查看 HexCode 编码的查询结果,可以勾选 执行 按钮后的 HexString 单选框,系统会将查询返回的结果中 varbinary 类型的字段都转为 HexCode 编码的字符串。详情如下图所示:

返回HexCode结果