全部产品
云市场
云游戏

使用HBase Shell

更新时间:2020-05-31 20:50:07

使用HBase Shell

通过HBase Shell工具,你可以交互式地进行数据管理,包括建表、插入数据、删除数据和删除表等, 本篇会介绍最基本的HBase Shell的使用命令, 完整通过help命令查看帮助,更多内容请参考Apache HBase Shell介绍

如果使用的是HBase标准版,请参考HBase Shell的配置来进行基本环境的配置。

如果使用的是HBase增强版,请参考HBase Shell访问来进行基本环境的配置。

常用命令

  • Shell 数据定义语言

    1. create: 用于创建一个表。
    2. list: 用于列出HBase的所有表。
    3. disable: 用于禁用表。
    4. is_disabled: 用于验证表是否被禁用。
    5. enable: 用于启用一个表。
    6. is_enabled: 用于验证表是否已启用。
    7. describe: 用于提供了一个表的描述。
    8. alter: 用于改变一个表。
    9. exists: 用于验证表是否存在。
    10. drop: 用于从HBase中删除表。
  • Shell 数据操作语言

    1. put: 用于把指定列在指定的行中单元格的值在一个特定的表。
    2. get: 用于取行或单元格的内容。
    3. delete:用于删除表中的单元格值。
    4. deleteall: 用于删除给定行的所有单元格。
    5. scan: 用于扫描并返回表数据。
    6. count: 用于计数并返回表中的行的数目。
    7. truncate: 清空表中的数据,其内部实现是将指定的表下线、删除、重建,该操作会丢失Region分区
    8. truncate_preserve:清空表中的数据,其内部实现是将指定的表下线、删除、重建,并且Region分区与旧表保留一致

1. 启动Shell

运行HBase目录下bin下的如下命令进入HBase shell

  1. $ ./bin/hbase shell
  2. HBase Shell; enter 'help<RETURN>' for list of supported commands.
  3. Type "exit<RETURN>" to leave the HBase Shell
  4. Version 0.94.23, rf42302b28aceaab773b15f234aa8718fff7eea3c, Wed Aug 27
  5. 00:54:09 UTC 2014
  6. hbase(main):001:0>

2. 显示帮助信息

help命令提供了很多基本的命令和对应的使用方法,当你忘记一些基本用法的时候,记得输入help来查看。

  1. hbase(main):001:0>help

3. 创建表

使用create命令来创建一张新的表,在创建的时候你必须输入表的名称和ColumnFamily的名称

  1. hbase(main):001:0> create 'test', 'cf'
  2. 0 row(s) in 0.4170 seconds
  3. => Hbase::Table - test

4. 查询表信息

使用list命令来查询表

  1. hbase(main):002:0> list 'test'
  2. TABLE
  3. test
  4. 1 row(s) in 0.0180 seconds
  5. => ["test"]

5. 往表里面插入记录

在hbase中,往表里面写一行记录的命令叫做put

  1. hbase(main):003:0> put 'test', 'row1', 'cf:a', 'value1'
  2. 0 row(s) in 0.0850 seconds
  3. hbase(main):004:0> put 'test', 'row2', 'cf:b', 'value2'
  4. 0 row(s) in 0.0110 seconds
  5. hbase(main):005:0> put 'test', 'row3', 'cf:c', 'value3'
  6. 0 row(s) in 0.0100 seconds

这里我们写入了三条数据,前面的rowx,代表写入的表的rowkey,也就是主键。后面的cf:x,是我们的自定义列,可以有无数多个,这里写了3个。我们叫这个a,b,c为qualifier,也就是列名。

6. 查询表中的所有数据

scan是一种访问HBase数据的方式,它非常的灵活,你可以用它来扫描全表,也可以用它查询固定范围。相应的它的速度会比查询单条的get略慢一些,这里因为我们的demo数据库数据并不多,所以我们全部取出来。

  1. hbase(main):006:0> scan 'test'
  2. ROW COLUMN+CELL
  3. row1 column=cf:a, timestamp=1421762485768, value=value1
  4. row2 column=cf:b, timestamp=1421762491785, value=value2
  5. row3 column=cf:c, timestamp=1421762496210, value=value3
  6. 3 row(s) in 0.0230 seconds

7. 查询单条记录

使用get来查询单条记录

  1. hbase(main):007:0> get 'test', 'row1'
  2. COLUMN CELL
  3. cf:a timestamp=1421762485768, value=value1
  4. 1 row(s) in 0.0350 seconds

8. 禁用一张表

如果你想要删除一张表,或者改变一张表的设置,或者其他类似的场景。你需要先禁用这张表,使用disable命令能够禁用一张表,使用enable命令能够取消禁用,恢复禁用的表。

  1. hbase(main):008:0> disable 'test'
  2. 0 row(s) in 1.1820 seconds
  3. hbase(main):009:0> enable 'test'
  4. 0 row(s) in 0.1770 seconds

9. 删除一张表

要删除一张表,使用drop命令,这是一个危险的操作,使用的时候请务必小心。

  1. hbase(main):011:0> drop 'test'
  2. 0 row(s) in 0.1370 seconds

10. 退出HBase Shell

输入quit命令就可以离开HBase Shell环境了。