通过Shell工具可以对云数据库HBase进行数据管理,包括建表、插入数据、删除数据和删除表等操作,本文介绍Shell的基本使用命令。

访问配置

常用命令

Shell的使用命令更多请参见Apache HBase Shell介绍

  • Shell数据定义语言
    create: 用于创建一个表。
    list: 用于列出HBase的所有表。
    disable: 用于禁用表。
    is_disabled: 用于验证表是否被禁用。
    enable: 用于启用一个表。
    is_enabled: 用于验证表是否已启用。
    describe: 用于提供了一个表的描述。
    alter: 用于改变一个表。
    exists: 用于验证表是否存在。
    drop: 用于从HBase中删除表。
  • Shell数据操作语言
    put: 用于把指定列在指定的行中单元格的值在一个特定的表。
    get: 用于取行或单元格的内容。
    delete:用于删除表中的单元格值。
    deleteall: 用于删除给定行的所有单元格。
    scan: 用于扫描并返回表数据。
    count: 用于计数并返回表中的行的数目。
    truncate: 清空表中的数据,其内部实现是将指定的表下线、删除、重建,该操作会丢失Region分区
    truncate_preserve:清空表中的数据,其内部实现是将指定的表下线、删除、重建,并且Region分区与旧表保留一致

进入和退出Shell环境

  • 执行以下命令进入Shell环境。
    bin/hbase shell
  • 执行以下命令退出Shell环境。
    quit
  • 使用help命令查看基本命令和对应的使用方法。
    help

基本操作

  • 创建表
    使用create命令来创建表格,在创建的时候必须输入表的名称和列族的名称。
    //创建一个名称为test,列族名为cf的表
    create 'test', 'cf'
  • 查询所有表的信息
    使用list命令来查询HBase数据库中所有表的信息,也可以使用正则表达式来过滤表。
    list
    list 'abc.*'
    list 'test'
  • 插入数据
    使用put命令为新创建的表插入数据。执行以下语句插入三条数据。
    put 'test', 'row1', 'cf:a', 'value1'
    put 'test', 'row2', 'cf:b', 'value2'
    put 'test', 'row3', 'cf:c', 'value3'
    说明 语句中test为表名,row1为表的Rowkey,cf:a表示自定义列,列族名和列名,value1为值。
  • 查询指定表的数据
    scan是一种访问HBase数据的方式,它非常的灵活,scan操作可以用它来扫描全表,也可以用它查询固定范围。查询速度会比查询单条(使用get)数据略慢一些,这里因为我们的demo数据库数据并不多,所以我们全部取出来。执行以下语句可以查询test表的数据。
    scan 'test'
    返回数据如下:
    ROW                                      COLUMN+CELL
     row1                                    column=cf:a, timestamp=1421762485768, value=value1
     row2                                    column=cf:b, timestamp=1421762491785, value=value2
     row3                                    column=cf:c, timestamp=1421762496210, value=value3
    3 row(s) in 0.0230 seconds
  • 查询表的单条数据
    使用get来查询表的单条数据。
    get 'test', 'row1'
    返回数据如下:
    COLUMN                                   CELL
     cf:a                                    timestamp=1421762485768, value=value1
    1 row(s) in 0.0350 seconds
  • 禁用和启用指定表
    如果您想要删除一张表,或者改变一张表的设置,或者其他类似的场景。您需要使用disable命令先禁用这张表,删除或者修改配置完成后,使用enable命令启用表,重新使用这张表。
    disable 'test'
    enable 'test'
  • 删除指定表
    如果您想要删除一张表,使用drop命令,这是一个危险的操作,请谨慎使用。
    drop 'test'

常用配置

  • 为指定表设置Major Compaction周期。
    Major Compaction周期的单位为毫秒(ms),默认值是7天,设置为0表示关闭周期。
    alter 'test', CONFIGURATION => {'hbase.hregion.majorcompaction' => 300000}
  • 为指定表的列族设置数据压缩格式。
    云数据库HBase的数据压缩详情介绍请参见数据压缩与编码
    alter 'test', NAME => 'cf', COMPRESSION => 'SNAPPY'
  • 为指定表的列族设置Block Encoding类型。
    将test表列族的Block Encoding类型设置为DATA_BLOCK_ENCODING。
    alter 'test', NAME => 'cf', DATA_BLOCK_ENCODING => 'PREFIX'
  • 为指定表的列族设置数据存活时间(Time To Live,简称TTL)。
    TTL单位为秒(s),例如2592000s=30天。
    alter 'test', NAME => 'cf', TTL => 2592000
  • 为指定表设置预分区。云数据库HBase的预分区详情介绍请参见设置预分区