一、建表:create
在创建表时,行建不用也不能预先定义,而对表数据进行操作时必须指定行建,即行建在添加数据时首次被确定,并且“时间戳”列也由HBase自动生成,所以只需指定列族即可
create 命令的语法格式:
create ‘表名称’,‘列名称1’,‘列名称2’,…
其中表名和列名必须用单引号括起来并用逗号隔开。
【示例】
创建一个表,表名为score,列族为grade和course。
create 'score','grade','course'
在创建表时,除了列族名称,列族的参数均为可选项,上面创建表的语句为简化方式,完整的写法如下:
create 'score',{NAME=>'grade',VERSIONS=>5},{NAME=>'course',VERSIONS=>5}
此命令指定了列族名称及可保存的单元时间版本最大量。指定列族参数的格式为:参数名 => 参数值,注意赋值符号为“ =>”且参数名必须大写。如果指定多个参数,应以逗号分开,最后所有参数以“{}”括起来表示一个列族。
二、查看所有表
使用 list 命令可以查看当前 HBase 数据库中的所有表,具体操作如下:
list
可以看到当前数据库中已经存在“score”表。如果要查看该表的所以列族的详细描述信息可以使用 describe 指令
describe score
三、添加数据:put
向 score 中添加一些数据,使用 put 命令可向表中插入数据,语法格式如下。
put ‘表名称’,‘行键’,‘列键’,‘值’
【示例】
批量向score表中插入数据
put 'score','tom','grade:','1'
put 'score','tom','course:art','80'
put 'score','tom','course:math','89'
put 'score','json','grade:','2'
put 'score','tom','course:art','87'
put 'score','tom','course:math','90'
四、扫描表
scan 用于全表单元扫描。语法格式如下:
score ‘表名’,{COLUMNS=>[‘列族名1’,‘列族名2’…],参数名:参数值…}
大括号内的内容为扫描条件,如不指定则查询所有数据
【示例1】
全表扫描
scan 'score'
注意一下,这里的输出提示显示的两行数据,因为在scan的结果中,将相同行键的所有单元视为一行。
【示例2】
指定 rowkey 范围查询
scan 'score',{'STARTROW'=>'j','STOPROW'=>'t'}
【示例3】
指定某个列族查询
scan 'score',{COLUMNS=>'course'}
【示例4】
指定具体的列键来扫描
scan 'score',{COLUMNS=>'course:math'}
五、获取数据
get 用于获取行的所有单元或者某个指定的单元。语法结构如下:
get ‘表名称’,‘行键’,{COLUMNS=>[‘列族名1’,‘列族名2’…],参数名:参数值…}
get ‘表名称’,‘行键’,{COLUMNS=>[‘列键1’,‘列键2’…],参数名:参数值…}
与scan相比多一个行键参数。scan 查找的目标是全表的某个列族、列键,而 get 查找的目标是某行的某个列族、列键。
【示例1】
查找行键为 ‘json’ 的所有单元
get 'score','json'
【示例2】
精确查找行键为 ‘json’,列键为 ‘course:math’ 的单元
get 'score','json',{COLUMNS=>'course:math'}
提示:
get 'score','json',{COLUMNS=>'course'} 等价于 get 'score','json','course'
get 'score','json',{COLUMNS=>'course:math'} 等价于 get 'score','json','course:math'
六、删除数据
语法如下:
delete ‘表名称’,‘行键’,‘列键’
delete ‘表名称’,‘行键’
delete 只能删除一个单元,而deleteall能删除一行。
【示例1】
删除 score 表中行键为 ‘json’ ,列键为 ‘course:art’ 的单元
delete 'score','json','course:art'
【示例2】
删除一行
delete 'score','json'
七、修改表
使用 alter 可为表增加或修改列族。语法如下:
alter ‘表名’,参数名=>参数值…
其中列族名参数NAME必须提供,如果已存在则修改,否则会增加一个列族。
【示例1】
将score表的列族“course”的"VERSIONS"参数修改为5。
alter 'score',NAME=>'course',VERSIONS=>'5'
【示例2】
将score表的两个列族“course”的"VERSIONS"参数修改为5。
alter 'score',{NAME=>'grade',VERSIONS=>'5'},{NAME=>'course',VERSIONS=>'5'}
【示例3】
删除一个列族数据
alter 'score','delete'=>'grade'
八、删除表
通过 describe 命令可以发现,HBase 表分为两种状态:enabled和disabled,分别表示是否可用。表默认为 enabled 状态,此状态下不可进行删除表操作,所以要先把表置为 disabled 状态,才能对表进行删除操作。
【示例】
disable 'score'
drop 'score'