三.基本命令
1.命名空间--区分大小写
(1)创建命名空间
create_namespace 'hadoop'
创建一个命名空间,并且指定属性
create_namespace 'ns1', {‘key1'=>'value2’}
注意:1)hbase中没有进入到某一个namespace概念,操作表格,一律带上namespace名称,否则就默认从default这个namespace中找;
2)赋值符号是:=>
(2)列举命名空间
list_namespace
(3)查看命名空间(describe_namespace)
describe_namespace 'hadoop'
(4)修改命名空间(alter_namespace)
①添加和修改
To add/modify a property:
hbase> alter_namespace 'ns1', {METHOD => 'set', 'PROPERTY_NAME' => 'PROPERTY_VALUE'}
alter_namespace 'ns1', {METHOD => 'set', 'key1' => 'VALUE2'}
②删除
To delete a property:
hbase> alter_namespace 'ns1', {METHOD => 'unset', NAME=>'PROPERTY_NAME'}
alter_namespace 'ns1', {METHOD => 'unset', NAME=>'key2'}
(5)删除命名空间(drop_namespace )
Drop the named namespace. The namespace must be empty.
drop_namespace 'ns1'
(6)列出命名空间下的表 (list_namespace_tables)
list_namespace_tables ‘ns1’
四.表的操作
Group name: ddl
Commands: alter, alter_async, alter_status, create, describe, disable, disable_all, drop, drop_all, enable, enable_all, exists, get_table, is_disabled, is_enabled, list, locate_region, show_filters
1.create
a.创建到指定命名空间下,指定表名,和至少一个列族,如果不知道命名空间,就是在default创建表
create 't1', {NAME => 'f1'}, {NAME => 'f2'}, {NAME => 'f3'}
create 't1', {NAME => 'f1', VERSIONS => 5}, METADATA => { 'mykey' => 'myvalue' }
create 'hadoop:t2',{NAME=>'f1',VERSIONS=>5}
hadoop :命名空间
t2:表名
NAME:列族名称
VERSIONS:版本号
2.describe
desc 'hadoop:t2'
主要看列族信息
{NAME => 'f1',
BLOOMFILTER => 'ROW', 布隆过滤器 ROW, ROWCOL,NONE
VERSIONS => '5', 指定版本
IN_MEMORY => 'false',该列族下数据缓冲是否放到内存
DATA_BLOCK_ENCODING => 'NONE',指定压缩格式
BLOCKCACHE => 'true',缓冲是否打开
BLOCKSIZE => '65536', 缓冲大小
TTL => 'FOREVER' 超时设置,如果在规定时间内,没有对表进行操作,那么该列族下的数据会自动情空
3.list
查看所有命名空间下的表
4.alter 修改表属性,列族属性的修改,如果对应的列族没有,就添加
hbase-site.xml
hbase.online.schema.update.enable
false
当创建表格的时候,默认是开启状态,可以直接修改表的属性;如设置为false,修改一个表的属性,会报错,需要先关掉,disable ‘hadoop:t2’,再修改
修改(如果没有就增加):
alter 't1', {NAME => 'f2', IN_MEMORY => true}, {NAME => 'f3', VERSIONS => 5}
alter ‘hadoop:t2’ ,NAME=>’f1’,VERSIONS=>3
删除(至少要保证有一个列族存在):
hbase> alter 'ns1:t1', NAME => 'f1', METHOD => 'delete'
hbase> alter 'ns1:t1', 'delete' => 'f1'
alter_async:异步修改表的属性
异步修改了列族的属性,不需要等待所有region都完成
5.表状态指令
disable:关闭表,可以修改表的属性,无法往表插入数据,也无法查询
enable:开启表,不能修改表属性,可以执行增删改查
is_enable:判断表是否处于开启状态
is_disabled:判断是否是关闭状态
6.drop 删除表(必须关闭才可以删除)
7.get_table获取表的对象,方便对该表操作
hadoop_t4 = get_table 'hadoop:t4'
原来的操作
disable 'hadoop:t4’
drop 'hadoop:t4’
使用get_table操作
hadoop_t4.disable
hadoop_t4.drop
五.dml操作
Commands: append, count, delete, deleteall, get, get_counter, get_splits, incr, put, scan, truncate, truncate_preserve
1.put 插入一个单元格
put 'ns1:t1', 'r1', 'cf:c1', 'value'
ns1:命名空间
t1:表格
r1:行
cf:列族
c1:列
时间戳有hbase自动添加,用于管理单元格多版本
hbase插入数据一次只能一个单元格
2.scan 全表查询,可以获取多行结果
全表扫描
scan 'hbase:human'
全表扫描 查找指定的列
scan 'hadoop:human', {COLUMNS => 'info'}
全表扫描,指定行数 限制5行
scan 'hadoop:human', { LIMIT => 5, STARTROW => '10'}
全表扫描,从STARTROW开始(包含),到STOPROW结束(不包含)
scan 'hadoop:human', { STARTROW => '10', STOPROW=>'8'}
全表扫描,以倒序显示
scan 'hadoop:human', {REVERSED => true}
3.get
(1)查询一行get 'hadoop:t1',1
(2)查询一行下的列:get 'hadoop:t1',1, {COLUMN =>'f1:id'}
(3)查询一个列族:get 'hadoop:t1',1, {COLUMN =>'f1'}
(4)查询多列:get 'hadoop:t1',1, {COLUMN =>['f1:id','f1:name']}
(5)查看某个列所有版本的数据:get 'hadoop:t1',1, {COLUMN =>'f1:id',VERSIONS =>2 }
如果VERSIONS 超过设置,把最老的数据删除
(6)根据时间戳查:get 'hadoop:t1',1, {COLUMN =>'f1:id',TIMESTAMP =>1547019748265 }
(7)根据时间戳范围查:get 'hadoop:t1',1, {COLUMN => 'f1:id',TIMERANGE=>[1447019748269,1947019778265],VERSIONS=>3 }
注意:
a.时间戳范围包含左边,但是不包含右边数据
b.VERSIONS 将影响查询最终的输出结果.
4.delete 删除一个单元格
没有指定时间戳,就是删除最新的单元格
delete 'hadoop:human', '1', 'info:name'
指定时间戳版本删除
delete 'hadoop:human', '1', 'info:name', 1547023471388
5.deleteall
删除整行数据
deleteall 'hadoop:human', '1'
删除该单元格所有版本
deleteall 'hadoop:human', 1, 'info:name'