导航

HBase Shell

Posted on 2019-07-25 14:54  两张10元钱  阅读(102)  评论(0编辑  收藏  举报

如需大数据开发整套视频(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一条新数据就可以,默认读取最新版本的数据