在开发调试,或者在生产运维过程中,往往需要去HBase中查询某条数据。除了使用了HBase shell来写Get、Scan请求。HBase增强版还在集群管理系统中提供了一个简单的SQL查询入口。用户可以使用熟悉的SQL语法来查询HBase的表。
从集群管理系统中的SQL查询页面可以进入数据查询系统。在使用前,先要选择要查询的表所在namespace。选中了namespace后,会在页面右边的树形结构中列出这个namespace里所有的表。点击表名可以显示这个表的schema, ROW代表RowKey, COL是预置的列名。用户可以方便地根据这个表的schema来构造select请求。
一、简单入门
一个典型的SQL查询交互过程如下:
首先选择一个namespace,例如 'default'
在页面右侧中查看您需要查询的表结构
在编辑器中输入您的SQL
点击上面的 '执行' 按钮,或者通过键盘输入 'contrl+enter'(Windows)/'command+return' (MacOS) 来执行
查看编辑器下方的结果表格,如果执行出错,在此处也可看见错误详情
页面操作过程如下图所示:
注意:集群管理系统的SQL查询页面不支持use namespace语法,只能通过左上角的namespace列表选择/切换namespace。
二、使用说明
在您执行SQL前,请您务必先阅读下面的几点重要说明,能有效解决您使用时可能遇到的问题或疑惑:
本系统只支持 'SELECT' 查询语句,如果需要变更数据操作,需要通过命令行或者使用产品提供的api自行开发应用。
为确保数据安全,本系统没次查询仅返回最多100条数据。
对所有varbinary类型的字段进行条件查询时,必须使用HexCode编码的字符串作为value 。
'ROW' 字段对应 HBase 的 rowkey,'ROW' 和 'qualifier' 都是 'varbinary' 类型,'qualifier' 如果不属于 family 'f', 则需要指定 family,例如: 'select `ROW`, q1, `f1:q2` from ...'。
'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 编码的查询结果,可以勾选 执行
按钮后的 HexString
单选框,系统会将查询返回的结果中 varbinary 类型的字段都转为 HexCode 编码的字符串。详情如下图所示: