好程序员大数据学习路线分享Hbase指令学习
启动:
1、启动zk zkServer.sh start
2、启动hdfs start-dfs.sh
3、启动hbase服务 start-hbase.sh
(启动报错的话要kill QuorumPeerMain的进程,在重新启动)
4启动客户端: hbase shell
时间必须同步,不然也会报错
TIMERANGE=>[xxxxx,xxxxx]时间戳的数组 range范围
TIMESTAMP=>xxxxx 时间戳单数 stamp 标志
xy02:16010
xy02:16010
Hbase没有库的概念,属于无模式,但是有 名称空间(namespace相当于库)和 组(相当于表)的概念
Hbase默认有两个组: Deflult 和 Hbase
list 显示hbase中的表
---------------------------------------------------------------------------------------------------------------------------------
增
create 'user', 'info', 'data' 创建user表,包含info、data两个列族,默认在(default)
create 'ns1:user', 'info', 'data' 在ns1(namesqpce)下建了user
create 'user1',{NAME=>'info',BLOOMFILTER => 'ROWCOL',VERSIONS => '2'}
alter 'user1',{NAME=>'data',BLOOMFILTER => 'ROWCOL',VERSIONS => '2'}
(有则更新更改,无则新增,可以利用alter新增data的列簇)
create 'user2', 'f1', SPLITS => ['10', '20', '30', '40'] --事先分配好region所管辖的rowkey的范围
插入数据:(不能一次性插入多列)
put 'user','rk01','info:name','xuyu'
put 'user','rk01','info:age','18'
put 'user','rk01','info:sex','boy'
put 'user','rk01','data:pic','picture'
更新数据
put 'user','rk01','info:name','xuyu1111' 查询的时候name就变成xuyu1111了
---------------------------------------------------------------------------------------------------------------------------------
删(删除整个表的时候要禁用表,就像文件在打开的时候无法重命名一样)
1disable 'test' 禁用test表
2drop 'test' 删除test表
3list 发现test表已经被删除了
4 enable 'user' 启用表
删除列簇:
alter 'user1', NAME => 'info', METHOD => 'delete'
alter 'user1', 'delete' => 'info'
删除数据
delete 'user','rk01','info:name' 删除name
delete 'user', 'rk01', 'info:name', 1534126109598 删除时间戳为xxx 的name
删除指定的版本:(往上删除版本)
delete 'user','rk01','info:name',TIMESTAMP=>1534138686498
表判断:
exists 'user' 判断表
disable 'user' 禁用表
enable 'user' 开启表
desc 'user' 显示表的属性信息
统计表:(统计效率较差,不建议使用)
count 'user'
清空表:
truncate 'user'
---------------------------------------------------------------------------------------------------------------------------------
改(重命名整个表的时候要禁用表,就像文件在打开的时候无法重命名一样)
1disable 'user'
有则更新,无则新增
alter 'user', NAME => 'f1'
alter 'user1',{NAME=>'data',BLOOMFILTER => 'ROWCOL',VERSIONS => '2'}
---------------------------------------------------------------------------------------------------------------------------------
查
describe 'user' 会显示name=data,name=info等一系列属性信息
表扫描(scan)
scan 'user' 对表进行扫描,会显示表中的内容数据
scan 'user',{COLUMNS => ['info:name','info:age']} 扫描指定的部分
设置查询条件:(包头不包尾)
scan 'user',{COLUMNS => ['info:name','info:age'],STARTROW=>'rk00002',LIMIT=>2}
scan 'user',{COLUMNS => ['info:name','info:age'],STARTROW=>'rk01',ENDROW=>'rk04',LIMIT=>2}
注意:这里的startrow和endrow只的都是rowkey(相当于主键)
查询数据:(GET)
get 'user','rk01' 获取全部数据
get 'user','rk01',{TIMESTAMP=>1534126755704}
get 'user','rk01','info' 获取列簇为info数据
get 'user','rk01','data' 获取列簇为data数据
get 'user','rk01','info:name' 只获取info中的name
获取user表中row key为rk0001,info、data列族的信息
get 'user', 'rk01', 'info', 'data' 获取info和data数据
get 'user','rk01',{COLUMN=>['info','data']}
get 'user', 'rk01', {COLUMN => ['info:name', 'data:pic']}
获取user表中row key为rk0001,列族为info,版本号最新5个的信息
get 'user', 'rk01', {COLUMN => 'info', VERSIONS => 2}
get 'user', 'rk01', {COLUMN => 'info:name', VERSIONS => 5}
get 'user', 'rk01', {COLUMN => 'info:name', VERSIONS => 5,TIMERANGE => [1534123523054,xxxxxxxxxxxxxxx]} 获取5个版本号中这2个时间戳的name
---------------------------------------------------------------------------------------------------------------------------------
Namespace 下的操作
list_namespace 列举出所有的namespace(相当于库),默认有2个组:default和hbase
create_namespace 'ns1' 创建一个名字为ns1的namespace(相当于库)
create 'ns1:user', 'info', 'data' 在ns1(namesqpce)下建了user,在user前加ns1:
list_namespace_tables 'ns1' 查看ns1下的表
alter_namespace 'ns1', {METHOD => 'set', 'NAME' => 'gjz1'} 修改
alter_namespace 'ns1', {METHOD => 'unset', NAME => 'NAME'} 删除
drop_namespace 'ns1' ###只能删除一个空的namespace
describe_namespace 'ns1' 查看内容描述
---------------------------------------------------------------------------------------------------------------------------------