Hbase学习笔记(三)Shell操作

使用hbase shell可以进入一个shell命令行界面!

[leon@hadoop102 HBase]$ bin/HBase shell

1. 其他操作

1.1 查看集群状态

使用status可以查看集群状态,默认为summary,可以选择‘simple’和‘detailed’来查看详情。

hbase(main):011:0> status
1 active master, 0 backup masters, 3 servers, 0 dead, 0.6667 average load

1.2 查看版本

hbase(main):002:0> version
1.3.1, r930b9a55528fe45d8edce7af42fef2d35e77677a, Thu Apr  6 19:36:54 PDT 2017

1.3 查看操作用户及组信息

hbase(main):003:0> whoami
leon (auth:SIMPLE)
groups: leon

1.4 查看表操作信息

hbase(main):004:0> table_help
Help for table-reference commands.

1.5 查看帮助信息

hbase(main):005:0> help
HBase Shell, version 1.3.1, r930b9a55528fe45d8edce7af42fef2d35e77677a, Thu Apr  6 19:36:54 PDT 2017
Type 'help "COMMAND"', (e.g. 'help "get"' -- the quotes are necessary) for help on a specific command.
Commands are grouped. Type 'help "COMMAND_GROUP"', (e.g. 'help "general"') for help on a command group.

1.6 查看具体命令的帮助

hbase(main):006:0> help 'get'
Get row or cell contents; pass table name, row, and optionally
a dictionary of column(s), timestamp, timerange and versions. Examples:

hbase> get 'ns1:t1', 'r1'

2. 表的操作

2.1 list - 列出所有的表

hbase(main):008:0> list
TABLE                                                                                                                    
0 row(s) in 0.0410 seconds

list后可以使用*等通配符来进行表的过滤!

2.2 create - 创建表

创建表时,需要指定表名和列族名,而且至少需要指定一个列族,没有列族的表是没有任何意义的。
创建表时,还可以指定表的属性,表的属性需要指定在列族上!

格式:

create '表名', { NAME => '列族名1', 属性名 => 属性值}, {NAME => '列族名2', 属性名 => 属性值}, …

如果你只需要创建列族,而不需要定义列族属性,那么可以采用以下快捷写法:

create'表名','列族名1' ,'列族名2', …

HBase(main):002:0> create 'student','info'

2.3 desc - 表的信息

hbase(main):003:0> describe 'person'
hbase(main):004:0> desc 'person'

2.4 disable - 停用表

停用表后,可以防止在对表做一些维护时,客户端依然可以持续写入数据到表。一般在删除表前,必须停用表。
在对表中的列族进行修改时,也需要停用表。

hbase(main):005:0> disable 'person'
0 row(s) in 2.4250 seconds

disable_all ‘正则表达式’ 可以使用正则来匹配表名。
is_disabled 可以用来判断表是否被停用。

hbase(main):006:0> is_disabled 'person'
true                                                                                                                   
0 row(s) in 0.0160 seconds

2.5 enable - 启用表

和停用表类似。enable ‘表名’用来启用表,is_enabled ‘表名’用来判断一个表是否被启用。

enable_all ‘正则表达式’可以通过正则来过滤表,启用复合条件的表。

2.6 exists - 表是否存在

hbase(main):008:0> exists 'person'
Table person does exist                                                                                                
0 row(s) in 0.0210 seconds

2.7 count - 表的个数

hbase(main):012:0> count 'person'
1 row(s) in 0.0240 seconds

=> 1

2.8 drop - 删除表

删除表前,需要先disable表,否则会报错。ERROR: Table xxx is enabled. Disable it first.

删除表前,需要先disable表,否则会报错。ERROR: Table xxx is enabled. Disable it first.

2.9 truncate - 清空表

hbase(main):013:0> truncate 'person'
Truncating 'person' table (it may take a while):
 - Disabling table...
 - Truncating table...
0 row(s) in 4.0010 seconds

2.10 get_split - 获取表所对应的Region个数

hbase(main):015:0> get_splits 'person'
Total number of splits = 1

=> []

获取表所对应的Region个数。每个表在一开始只有一个region,之后记录增多后,region会被自动拆分。

2.11 alter - 修改表的属性

alter命令可以修改表的属性,通常是修改某个列族的属性。

alter ‘表名’, ‘delete’ => ‘列族名’

hbase(main):050:0> alter 'myns:t1',{NAME => 'info',VERSIONS => '5'}

hbase> alter 'ns1:t1', 'delete' => 'f1'

3. 数据操作

3.1 scan - 查询表

scan命令可以按照rowkey的字典顺序来遍历指定的表的数据。

scan ‘表名’:默认当前表的所有列族。

scan ‘表名’,{COLUMNS=> [‘列族:列名’],…} : 遍历表的指定列

scan '表名', { STARTROW => '起始行键', ENDROW => '结束行键' }:指定rowkey范围。如果不指定,则会从表的开头一直显示到表的结尾。区间为左闭右开。

scan '表名', { LIMIT => 行数量}: 指定返回的行的数量

scan '表名', {VERSIONS => 版本数}:返回cell的多个版本

scan '表名', { TIMERANGE => [最小时间戳, 最大时间戳]}:指定时间戳范围

注意:此区间是一个左闭右开的区间,因此返回的结果包含最小时间戳的记录,但是不包含最大时间戳记录
scan '表名', { RAW => true, VERSIONS => 版本数}

显示原始单元格记录,在Hbase中,被删掉的记录在HBase被删除掉的记录并不会立即从磁盘上清除,而是先被打上墓碑标记,然后等待下次major compaction的时候再被删除掉。注意RAW参数必须和VERSIONS一起使用,但是不能和COLUMNS参数一起使用。

scan '表名', { FILTER => "过滤器"} and|or { FILTER => "过滤器"}: 使用过滤器扫描

HBase(main):008:0> scan 'student'
HBase(main):009:0> scan 'student',{STARTROW => '1001', STOPROW  => '1001'}
HBase(main):010:0> scan 'student',{STARTROW => '1001'}

3.2 put - 插入数据

put可以新增记录还可以为记录设置属性。

put '表名', '行键', '列名', '值'

put '表名', '行键', '列名', '值',时间戳

put '表名', '行键', '列名', '值', { '属性名' => '属性值'}

put '表名', '行键', '列名', '值',时间戳, { '属性名' =>'属性值'}

HBase(main):012:0> put 'student','1001','info:name','Nick'
HBase(main):003:0> put 'student','1001','info:sex','male'
HBase(main):004:0> put 'student','1001','info:age','18'
HBase(main):005:0> put 'student','1002','info:name','Janna'
HBase(main):006:0> put 'student','1002','info:sex','female'
HBase(main):007:0> put 'student','1002','info:age','20'

3.3 get - 获取单行表数据

get支持scan所支持的大部分属性,如COLUMNS,TIMERANGE,VERSIONS,FILTER

HBase(main):014:0> get 'student','1001'
HBase(main):015:0> get 'student','1001','info:name'

3.4 delete - 删除数据

删除某rowkey的全部数据:

HBase(main):016:0> deleteall 'student','1001'

删除某rowkey的某一列数据:

HBase(main):017:0> delete 'student','1002','info:sex'

你可能感兴趣的:(Hbase学习笔记(三)Shell操作)