进入hbase
# bin/hbase shell
HBase Shell; enter 'help<RETURN>' for list of supported commands.Type "exit<RETURN>" to leave the HBase Shell
Version 1.0.3, rf1e1312f9790a7c40f6a4b5a1bab2ea1dd559890, Tue Jan 19 19:26:53 PST 2016
hbase(main):001:0>
查看数据库状态
> status
1 servers, 0 dead, 3.0000 average load
查询数据库版本
> version
1.0.3, rf1e1312f9790a7c40f6a4b5a1bab2ea1dd559890, Tue Jan 19 19:26:53 PST 2016命令帮助
> help
创建表
> create 'mytable01','pinfo','pdesc'
0 row(s) in 0.1500 seconds=> Hbase::Table - mytable01
显示表
> list查询表是否存在
> exists 'mytable01'显示表结构
> describe 'mytable01'添加列族
> disable 'mytable01'
> alter 'mytable01',name='address'
> enable 'mytable01'
删除列族方法1
> disable 'mytable01'
> alter 'mytable01',{NAME=>'address',METHOD=>'delete'}
> enable 'mytable01'
删除列族方法2
> disable 'mytable01'
> alter 'mytable01','delete' => 'paddress'
> enable 'mytable01'
注意:
1. ddl中的create,alter,drop,enable等都必需用小写,因为ddl命令是区分大小写的。而{}中的属性名都必需用大写。
2. alter、drop表之前必需在先禁用(disabel)表,修改完后再启用表(enable)表。查询表的enable/disable当前状态
> is_enabled 'mytable01'
> is_disabled 'mytable01'
删除表
> disable 'mytable01'
> drop 'mytable01'
插入表数据 put '表名','行键','列族:key','value'
> put 'mytable01','jack','pinfo:sex','man'
> put 'mytable01','jack','pinfo:age','40'
> put 'mytable01','jack','pinfo:phone','13711223344'
> put 'mytable01','jack','pdesc:terrorist','yes'
> put 'mytable01','jack','pdesc:paddress','hz.zj.cn'
> put 'mytable01','lucy','pinfo:sex','female'
> put 'mytable01','lucy','pinfo:age','28'
修改一条记录
> put 'mytable01','jack','pinfo:phone','13788888888'
hbase修改记录的原理,实质就是插入一条带有时间戳的记录,查询时只显示最新时间的记录,插入记录的同时,默认会携带时间戳。
由于默认带有时间戳,所以查询的时候,也可以通过时间戳来查询记录。
> get 'mytable01','jack',{COLUMN=>'pinfo:phone',TIMESTAMP=>1356483681248}
获取行键的数据,必须通过行键row-key来查询数据
获取一行键的所有数据
> get 'mytable01','jack'
获取列族的所有数据
> get 'mytable01','jack','pinfo'
获取列族中指定的一个列的所有数据
> get 'mytable01','jack','pinfo:age'
删除指定行键的列族字段
> delete 'mytable01','jack','pinfo:sex'
删除整行
> deleteall 'mytable01','jack'
清空整张表
> truncate 'mytable01'
注意:由于hadoop的HDFS文件系统不允许直接修改,所以只能先删除表,然后再重新创建,来达到清空表的目的。和其他数据库的truncate实现有区别。
查询表大小(总行数)
> count 'mytable01'
全表扫描
> scan 'mytable01'