hbase基于hue的查询语法

hbase基于hue的查询语法

登录地址

https://hue-ui.xiaoniangao.cn

界面操作说明

  1. 进入hue中的hbase
    xM0YIPc.png
  2. 进入表的查询界面
    ALYLFBK.png
  3. 界面说明
    74GokZt.png

查询语句

,表示结束查询,可以不加

主键查询

  1. 输入主键 rowkey1,rowkey2
    说明:只输入主键查询
    例1:00000051|1538229142
    例2:00000051|1538229142,00000051|1538230148
    oLUzJoU.png
  2. 根据主键的前缀查询 row_prefix*,
    说明:根据主键的前几位进行模糊查询,默认只显示一条数据;通过 +n-1 来显示n条数据
    例1:00000051|*
    例2:显示10条数据 00000051|* +9
    8deP28C.png
    9lSq58i.png

查询列族和列名

[colFamily:col1,colFamily:col2,colFamily:,col3,col_prefix*+(n-1),col1 to col2]
说明:colFamily表示列族,col表示列名, colFamily: 表示显示该列族下所有列, <col_prefix>*+(n-1) 根据列名模糊查询,col1 to col2显示col1到col2之间的列
例100000051|* +9 [i:ts,i:path]
GHmDyTT.png
例200000051|* +9 [i:p*+3]
VxFTjkY.png
例300000051|1538229142,00000051|1538230148[elapse to path]
oENVmG2.png

根据条件过滤查询

{filter() AND/OR filter()}
个人意见:substring筛选时使用=来筛选,否则会出错;binary筛选时可以用=、>=、<=等操作

  • 根据主键进行过滤
    • RowFilter(=,'substring:111') 主键中包含111
    • RowFilter(=,'binary:111') 主键等于111
    • PrefixFilter('user1') 主键的前缀是user1
      XcDZxeB.png
  • 根据列进行过滤
    • 列名过滤
      • QualifierFilter (=, 'substring:p') 列名中包含p
      • QualifierFilter (=, 'binary:p') 列名等于p
      • MultipleColumnPrefixFilter('a','b','e') 列名的前缀是a或者b或者e
      • ColumnPrefixFilter('c2') 列名的前缀是c2
        Y1UN3a1.png
    • 列值过滤
      • SingleColumnValueFilter('i', 'path', =, 'substring:student') 列族为i,列名为path,列值包含student
      • SingleColumnValueFilter('i', 'path', =, 'binary:student') 列族为i,列名为path,列值等于student
      • ValueFilter(=,'substring:111') 列值中包含111
      • ValueFilter(=,'binary:111') 列值等于111
        qZe3pvJ.png
        laumBV7.png
        以上过滤器是大部分常用的过滤器,在hue-hbase中另有一些过滤器未在此文档中描述。

以下是我自己整理的一部分参考语法:

hbase中有单纯根据列值查询的ValueFilter和根据列名和列值查询的SingleColumnValueFilter,可根据需要选择。
下表中是按照根据列名和列值来进行查询的参考

SQLhue_hbase
select col1,col2[col1,col2]
where col1="student"SingleColumnValueFilter('i', 'col1', =, 'binary:student')
where col1 like "%body%"SingleColumnValueFilter('i', 'col1', =, 'substring:body')
where col1>=1.9SingleColumnValueFilter('i', 'col1', >=, 'binary:1.9')
where col1="student" AND col2>1.9SingleColumnValueFilter('i', 'col1', =, 'binary:student') AND SingleColumnValueFilter('i', 'col2', >, 'binary:1.9')
where col1="student" OR col2>1.9SingleColumnValueFilter('i', 'col1', =, 'binary:student') OR SingleColumnValueFilter('i', 'col2', >, 'binary:1.9')

转载于:https://www.cnblogs.com/fengzzi/p/10033093.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
HBase 中,可以使用过滤器(Filter)来查询符合特定 RowKey 规则的数据。常用的过滤器包括 PrefixFilter、SingleColumnValueFilter、CompareFilter 等。 其中,PrefixFilter 可以用于查询指定前缀的 RowKey,其语法如下: ``` Scan scan = new Scan(); Filter filter = new PrefixFilter(Bytes.toBytes(prefix)); scan.setFilter(filter); ResultScanner scanner = table.getScanner(scan); for (Result result : scanner) { // 处理结果 } scanner.close(); ``` 其中,`prefix` 为 RowKey 的前缀,`table` 为 HBase 表对象。在代码中,首先创建一个 `Scan` 对象,然后创建一个 `PrefixFilter` 对象,设置查询的前缀,再将 `Filter` 对象设置到 `Scan` 对象中,最后通过 `table.getScanner()` 方法获取 `ResultScanner` 对象,遍历结果并进行处理。 除了 PrefixFilter,如果需要查询符合特定条件的 RowKey,可以使用 SingleColumnValueFilter 和 CompareFilter。例如,可以使用 SingleColumnValueFilter 查询某个列的值是否符合特定条件,其语法如下: ``` Scan scan = new Scan(); Filter filter = new SingleColumnValueFilter( Bytes.toBytes(family), Bytes.toBytes(qualifier), CompareOperator.EQUAL, Bytes.toBytes(value) ); scan.setFilter(filter); ResultScanner scanner = table.getScanner(scan); for (Result result : scanner) { // 处理结果 } scanner.close(); ``` 其中,`family` 和 `qualifier` 分别为列族和列名,`value` 为需要匹配的值,可以根据实际情况选择比较操作符(例如 EQUAL、GREATER、LESS 等)。 需要注意的是,过滤器的使用可能会影响查询性能,因此应该根据具体情况进行选择。同时,过滤器可能需要从所有的 Region 中获取数据,并在客户端进行过滤,因此需要考虑网络带宽和客户端的计算能力等因素。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值