
# 查询HBase表
SELECT命令用于查询hbase表中的数据。
#### 语法格式
```
SELECT * FROM table_name LIMIT number;
```
#### 关键字
LIMIT：对查询结果进行限制，number参数仅支持INT类型。
#### 注意事项
所查询的表必须是已经存在的表，否则会出错。
#### 示例
查询表中的数据。
```
SELECT * FROM test_hbase limit 100;
```
#### 查询下压
通过hbase进行数据过滤，即HBase Client将过滤条件传给HBase服务端进行处理，HBase服务端只返回用户需要的数据，提高了Spark SQL查询的速度。对于HBase不支持的过滤条件，例如组合Rowkey的查询，直接由Spark SQL进行。
- 支持查询下压的场景
  - 数据类型场景
    - Int
    
    - boolean
    
    - short
    
    - long
    
    - double
    
    - string
    
    
    ![](https://support.huaweicloud.com/sqlref-spark-dli/public_sys-resources/note_3.0-zh-cn.png)
    float类型数据不支持查询下压。
    
  
  - 过滤条件场景
    - 过滤条件为\>,\<,\>=,\<=,=,!=,and,or 例如：
      ```
      select * from tableName where (column1 >= value1 and column2<= value2) or column3 != value3
      ```
      
    
    - 过滤条件为like 和 not like，支持前缀，后缀和包含匹配 例如：
      ```
      select * from tableName where column1 like "%value" or column2 like "value%" or column3 like "%value%"
      ```
      
    
    - 过滤条件为IsNotNull() 例如：
      ```
      select * from tableName where IsNotNull(column)
      ```
      
    
    - 过滤条件为in ,not in 例如：
      ```
      select * from tableName where column1 in (value1,value2,value3)  and column2 not in (value4,value5,value6)
      ```
      
    
    - 过滤条件为between _ and _ 例如：
      ```
      select * from tableName where column1 between value1 and value2
      ```
      
    
    - 组合rowkey中的子rowkey过滤 例如，组合Rowkey为column1+column2+column3，进行子rowkey查询：
      ```
      select * from tableName where column1= value1
      ```
      
     
   
- 不支持查询下压的场景
  - 数据类型场景 除上述支持的数据类型外，其余复杂数据类型不支持查询下压。
    
  
  - 过滤条件场景
    - length，count，max，min，join，groupby，orderby，limit和avg等
    
    - 过滤条件为列比较 例如：
      ```
      select * from tableName where column1 > (column2+column3)
      ```
      
     
   
 
