如需大数据开发整套视频(hadoop\hive\hbase\flume\sqoop\kafka\zookeeper\presto\spark):请联系QQ:1974983704
HBase Shell
在bin目录下运行命令启动shell
1 hbase shell
进入命令行模式
建表:表明scores,有两个列簇:‘grade’和‘course’
1 create 'scores','grade','course'
查看HBase中的表
1 list
查看表结构
1 describe 'scores'
- HBase Shell-put
put:写入数据,格式如下:
1 put 't1','r1','c1','value',ts1
t1指表名,r1指行键(row key),c1指列名,value指值,ts1指时间戳(一般都省略不设置)
向scores表中插入数据
1 put 'scores','Tom','grade',5 2 put 'scores','Tom','course:math',97 3 put 'scores','Tom','course:art',87 4 put 'scores','Jim','grade',4 5 put 'scores','Jim','course:math',68 6 put 'scores','Jim','course:science',89
- HBase Shell-get
get:随机查找数据,get命令格式如下:
1 get 't1','r1' (t1表名,r1:row key 获取整行数据) 2 get 't1','r1','c1' 3 get 't1','r1','c1','c2' 4 get 't1','r1',{COLUMN=>'c1',TIMESTAMP=>ts1} 5 get 't1','r1',{COLUMN=>'c1',TIMERANGE=>{ts1,ts2},VERSIONS=>4}
示例:
1 get 'scores','Tom' 2 get 'scores','Tom','grade' 3 get 'scores','Tom','grade','course'
- HBase Shell-scan
scan:范围查找数据,scan命令格式如下:
1 scan 't1' (t1:表名,全表扫描,轻易不要做,尤其数据量比较大的时候,非常耗时) 2 scan 't1',{COLUMNS=>'c1:q1'} 3 scan 't1',{COLUMNS=>['c1','c2'],LIMIT=>10,STARTROW=>'xyz'} (从哪开始,LIMIT=>10,就是读取10行) 4 scan 't1',{REVERSED=>true}
示例:
1 scan 'scores' 2 scan 'scores',{COLUMNS=>'course:math'} 3 scan 'scores',{COLUMNS=>'course'} 4 scan 'scores',{COLUMNS=>'course',LIMIT=>1,STARTROW='jim'}
- HBase Shell-delete
delete:删除数据,delete命令格式如下:
1 delete 't1','r1','c1',ts1
示例:
1 delete 'scores','Jim','course:math'
Truncate删除全表数据,相当于删除全表,重新创建表结构
1 truncate 'scores'
- HBase Shell -alter
alter:修改表结构
为scores表增加一个family列簇,名为profile
1 alter 'scores',NAME=>'profile'
删除profile列簇
1 alter 'scores',NAME=>'profile',METHOD=>'delete'
HBase如何实现delete:
HBase在删除一条数据的时候,HBase Server端并没有删除数据,而是重新写入一条新数据的KeyType类型为delete,并没有真正的删除,在物理层面还是存在的,相当于标记,在数据合并的时候才会真正的物理删除。
HBase Shell -删除表
删除表的步骤
disable 't1'
drop 't1'
示例:
disable 'scores'
drop 'scores'
HBase中没有update语句,如果想修改一条数据,直接put一条新数据就可以,默认读取最新版本的数据