Hbase Shell 为 Hbase 提供了一套“简单方便”的命令行工具。使用它能够很好地与 Hbase 进行交互,例如查看 Hbase 集群状态、对 Hbase 数据进行增删改查操做等等。启动 Hbase 以后,咱们能够经过 "hbase shell" 来进入 Hbase Shell 命令行。 mysql
Hbase Shell 中运行 help 命令能够看到有哪些命令可使用。这些命令按照功能范围被分红了不少组(Command Groups),每组都包含了若干个命令。本文我选取几个平常工做中经常使用的命令来进行介绍(对其余命令感兴趣的朋友,能够逐个百度或者 google 进行了解),这些命令主要分布在 general(通用)、ddl(data manipulation language:数据操做语言)、dml(data definition language:数据定义语言) 这些分组中。 sql
而且,咱们还能够在 status 后面加上 'simple'、'summary' 或者 'detauled' 字段来获取更加详细的信息。这里,不加任何字段的 status 等同于 status 'summary'。shell
一些关于表操做命令的帮助介绍(Help for table-reference commands)。数据库
查询当前的 hbase 用户bash
DDL 和 DML 这两类命令是工做中常常须要使用到的,而且二者关联性较大,因此这里将 这两类的命令放在一块儿讲解。微信
列出数据库中全部表运维
判断表是否存在 用法: exists '表名' 工具
建立表 用法: create '表名','列族1','列族2'google
hbase(main):007:0> create 'kooola','cf1','cf2'
复制代码
例如上面的语句就建立了拥有两个列族(cf一、cf2)的表,表名为kooolaspa
查看表的结构 用法: describe '表名'
hbase(main):010:0> describe 'kooola'
Table kooola is ENABLED
kooola
COLUMN FAMILIES DESCRIPTION
{NAME => 'cf1', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS => '0', BLO
CKCACHE => 'true', BLOCKSIZE => '65536', REPLICATION_SCOPE => '0'}
{NAME => 'cf2', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS => '0', BLO
CKCACHE => 'true', BLOCKSIZE => '65536', REPLICATION_SCOPE => '0'}
2 row(s) in 0.0360 seconds
复制代码
显而易见,查看刚刚建立的 kooola 表,发现有两个列族:cf1 和 cf2
向指定表插入数据 用法: put '表名','rowkey','列族:列名','值'。
列簇下的列不须要提早建立,插入值时经过'列族:列名'来指定就行,这意味着 hbase 对表结构的要求更加灵活
hbase(main):013:0> put 'kooola','xxxxxx1','cf1:name','march'
复制代码
例如上面的命令,就是向 kooola 表中插入一行数据,其中 rowkey 为 xxxxxx1,cf1 列族的 name 列有一个值为 march
查询表的记录数 用法:count '表名'
hbase(main):002:0> count 'kooola'
1 row(s) in 0.0320 seconds
复制代码
查询表数据 用法: scan '表名' 固然你也能够增长一些过滤器来指定查询条件。
咱们能够认识一些关键字,例如 COLUMN 和 COLUMNS 进行列族、列过滤;STARTROW 和 STOPROW 用以标识起始、终止rowkey;LIMIT 指定查询的个数;VERSIONS 指定版本。
hbase(main):001:0> scan 'kooola'
查询全部数据
复制代码
scan 'kooola', {COLUMN=>'cf1'}
指定列族进行查询
复制代码
scan 'kooola', {COLUMNS=> 'cf1:name'}
指定列进行查询
复制代码
scan 'kooola', { STARTROW => 'xxxxxx1', LIMIT=>2, VERSIONS=>1}
rowkey 从 xxxxxx1 开始查询 2 个版本为 1 的记录
复制代码
scan 'kooola', {COLUMNS => ['cf1', 'cf2'], LIMIT => 10, STARTROW => 'xxxxxx1'}
rowkey 从 xxxxxx1 开始查询 10 条记录,记录只显示列族为 cf1 和 cf2 的值
复制代码
例外咱们也可使用 FILTER 对值进行过滤
scan 'kooola',FILTER=>"RowFilter(=,'binary:xxxxxx1')"
查询 rowkey 为 xxxxxx1 的记录
scan 'kooola',FILTER=>"RowFilter(>,'binary:xxxxxx1')"
查询 rowkey 大于 xxxxxx1 的记录
复制代码
scan 'kooola',FILTER=>"RowFilter(=,'substring:xxx1')"
查询 rowkey 中包含 xxx1 的记录
复制代码
scan 'kooola',FILTER=>"ValueFilter(=,'binary:march')"
查询拥有 march 值的记录
复制代码
scan 'kooola',FILTER=>"ValueFilter(=,'substring:arch')"
查询值包含 arch 的记录
复制代码
scan 'kooola',FILTER=>"PrefixFilter('xxxx')"
查询 rowkey 前缀为 xxxx 的记录
复制代码
获取行或单元的值 用法: get '表名','rowkey' get '表名','rowkey','列族' get '表名','rowkey','列族:列'
get 'kooola','xxxxxx1'
复制代码
get 'kooola','xxxxxx1','cf1:name'
复制代码
使用 delete 命令,能够在一个表中删除特定单元格 用法: delete '表名', 'rowkey', '列族:列'
使用“deleteall”命令,能够删除一行中全部单元格 deleteall '表名', 'rowkey'