更新时间:2022-12-07 GMT+08:00

查询HBase表

SELECT命令用于查询hbase表中的数据。

语法格式

1
SELECT * FROM table_name LIMIT number;

关键字

LIMIT:对查询结果进行限制,number参数仅支持INT类型。

注意事项

所查询的表必须是已经存在的表,否则会出错。

示例

查询表test_ct中的数据。

1
SELECT * FROM test_hbase limit 100;

查询下压

通过hbase进行数据过滤,即HBase Client将过滤条件传给HBase服务端进行处理,HBase服务端只返回用户需要的数据,提高了Spark SQL查询的速度。对于HBase不支持的过滤条件,例如组合Rowkey的查询,直接由Spark SQL进行。

  • 支持查询下压的场景
    • 数据类型场景
      • Int
      • boolean
      • short
      • long
      • double
      • string

      float类型数据不支持查询下压。

    • 过滤条件场景
      • 过滤条件为>,<,>=,<=,=,!=,and,or

        例如:

        1
        select * from tableName where (column1 >= value1 and column2<= value2) or column3 != value3
        
      • 过滤条件为like 和 not like,支持前缀,后缀和包含匹配

        例如:

        1
        select * from tableName where column1 like "%value" or column2 like "value%" or column3 like "%value%"
        
      • 过滤条件为IsNotNull()

        例如:

        1
        select * from tableName where IsNotNull(column)
        
      • 过滤条件为in ,not in

        例如:

        1
        select * from tableName where column1 in (value1,value2,value3)  and column2 not in (value4,value5,value6)
        
      • 过滤条件为between _ and _

        例如:

        1
        select * from tableName where column1 between value1 and value2
        
      • 组合rowkey中的子rowkey过滤

        例如,组合Rowkey为column1+column2+column3,进行子rowkey查询:

        1
        select * from tableName where column1= value1
        
  • 不支持查询下压的场景
    • 数据类型场景

      除上述支持的数据类型外,其余复杂数据类型不支持查询下压。

    • 过滤条件场景
      • length,count,max,min,join,groupby,orderby,limit和avg等
      • 过滤条件为列比较

        例如:

        1
        select * from tableName where column1 > (column2+column3)