环境准备

安装并启动HBase

这里主要记录HBase shell的命令。进入HBase shell:

hbase shell

帮助文档

使用help查看所有命令

help

help

可以使用help "create"来查看具体命令的帮助

命名空间

namespace指对一组表的逻辑分组,类似DBMS中的一个数据库,方便对表在业务上划分。

常用操作:

  1. 创建命名空间:create_namespace "test"
  2. 列出所有命名空间:list_namespace ln

可以看到3个namespace,其中hbase是系统内建的;用户建表时未指定命名空间的表都放在default里。 3. 查看描述:describe_namespace "test" 4. 列出命名空间下的所有表:list_namespace_tables "hbase" lnt

可以看到内建的命名空间hbase中有两个表:meta和namespace

建表

  1. 不指定命名空间建表:
# create '表名', '列名a', '列名b'
create 'tb_a', 'col_a', 'col_b'

即在default命名空间下创建了表tb_a,包含列名col_a和col_b create_default

  1. 指定命名空间建表:
# create '命名空间:表名', '列名a', '列名b'
create 'test:tb_b', 'col_a', 'col_b'

即在test命名空间下创建了表tb_b,包含列名col_a和col_b create_at_test

  1. 查看所有表:
list # ["tb_a", "test:tb_b"]
  1. 判断表是否存在:
exists "tb_a" # => true
exists "tb_c" # => false

插入数据

使用put命令插入数据

# put '表名', '行键', '列名:(列描述符)', '值'
put 'tb_a', '1001', 'col_a:', 'val_1'
put 'tb_a', '1001', 'col_b:desc_a', 'val_2'
put 'tb_a', '1001', 'col_b:desc_b', 'val_3'

put 'tb_a', '1002', 'col_a:', 'val_4'

put 'tb_a', '1003', 'col_a:', 'val_5'

查看数据

使用scan命令查看数据

# 最基本的: scan '表名'
scan 'tb_a'
# 设置约束: scan '表名', {约束条件}
scan 'tb_a', {COLUMN=>'col_a'} # 仅查看列col_a
scan 'tb_a', {COLUMN=>['col_a', 'col_b']} # 仅查看列col_a和col_b

scan 'tb_a', {STARTROW=>'1002'} # 仅查看1002行及其后的行
scan 'tb_a', {STARTROW=>'1002', STOPROW=>'1003'} # 仅查看1002-1003行的内容

scan_1 scan_2

获取数据

使用get命令获取数据

# 基本用法: get '表名', '行键'
get 'tb_a', '1001'

# 设置约束: get '表名', '行键', {约束条件}
get 'tb_a', '1001', {COLUMNS=>'col_a'} # 查看1001中的col_a
get 'tb_a', '1001', {COLUMNS=>['col_a', 'col_b']} # 查看1001中的col_a和col_b

get 'tb_a', '1001', {COLUMN=>'col_b:desc_a'} # 指定列描述符

get

删除数据

使用delete删除一个单元,deleteall删除一行

# 删除一个单元: delete '表名', '行键', '列键:(列描述符)'
delete 'tb_a', '1001', 'col_b:desc_b'
delete 'tb_a', '1001', 'col_b'
scan 'tb_a' # 可以看到tb_a中的1001的col_b已被删除

delete

# 删除一行: deleteall '表名', '行键'
deleteall 'tb_a', '1003'
scan 'tb_a' # 可以看到tb_a中的1003已被删除

deleteall

删除表

使用disable命令禁用表,使用drop命令删除已禁用的表

# 要删除一个表首先需要禁用该表
disable 'tb_a'
# 再删除
drop 'tb_a'