Hbase 之shell命令(二)

hbase shell : 进入hbase shell console

  1. 创建一个表member : (表名: ‘member’, 列族 :’m_id’,’address’,’info’)
    在创建表只需要指定表名与列族便可
 hbase(main):025:0> create 'member','m_id','address','info'

2.list #查看所有表

hbase(main):037:0> list
TABLE                                                                                                                                                                                                            
blog                                                                                                                                                                                                             
member                                                                                                                                                                                                           
table1                                                                                                                                                                                                           
3 row(s) in 0.0090 seconds

=> ["blog", "member", "table1"]

3.查看表描述 desc ‘tablename’

hbase(main):040:0* desc 'member'
Table member is ENABLED                                                                                                                                                                                          
member                                                                                                                                                                                                           
COLUMN FAMILIES DESCRIPTION                                                                                                                                                                                      
{NAME => 'address', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS => '0', BLOC
KCACHE => 'true', BLOCKSIZE => '65536', REPLICATION_SCOPE => '0'}                                                                                                                                                
{NAME => 'info', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS => '0', BLOCKCA
CHE => 'true', BLOCKSIZE => '65536', REPLICATION_SCOPE => '0'}                                                                                                                                                   
{NAME => 'm_id', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS => '0', BLOCKCA
CHE => 'true', BLOCKSIZE => '65536', REPLICATION_SCOPE => '0'}                                                                                                                                                   
3 row(s) in 0.0250 seconds

4、插入数据

 put命令比较简单,只有这一种用法:
 hbase>put ‘t1′, ‘r1′, ‘c1′, ‘value', ts1
 t1指表名,r1指行键名,c1指列名,value指单元格值。ts1指时间戳,一般都省略掉了。
     eg:   put'member','scutshuxue','info:age','24'
           put'member','scutshuxue','info:birthday','1987-06-17'
           put'member','scutshuxue','info:company','alibaba'
           put'member','scutshuxue','address:contry','china'

5、 scan浏览表中数据

hbase(main):048:0>  scan 'member',LIMIT=>10
ROW                                                   COLUMN+CELL                                                                                                                                                
 scutshuxue                                           column=address:contry, timestamp=1497409704325, value=china                                                                                                
 scutshuxue                                           column=info:age, timestamp=1497409677439, value=24                                                                                                         
 scutshuxue                                           column=info:birthday, timestamp=1497409686575, value=1987-06-17                                                                                            
 scutshuxue                                           column=info:company, timestamp=1497409696404, value=alibaba                                                                                                
1 row(s) in 0.0320 seconds
    也可以指定一些修饰词:TIMERANGE, FILTER, LIMIT,STARTROW, STOPROW, TIMESTAMP, MAXLENGTH,or COLUMNS
    eg:hbase>scan ‘t1′, {COLUMNS => ‘c1′, TIMERANGE => [1303668804, 1303668904]}

6、查询数据

    获取一个id的所有数据
     hbase(main):050:0* get 'member','scutshuxue'
COLUMN                                                CELL                                                                                                                                                       
 address:contry                                       timestamp=1497409704325, value=china                                                                                                                       
 info:age                                             timestamp=1497409677439, value=24                                                                                                                          
 info:birthday                                        timestamp=1497409686575, value=1987-06-17                                                                                                                  
 info:company                                         timestamp=1497409696404, value=alibaba  

     获取一个id,一个列族的所有数据
     hbase(main):053:0> get 'member','scutshuxue','info'
COLUMN                                                CELL                                                                                                                                                       
 info:age                                             timestamp=1497409677439, value=24                                                                                                                          
 info:birthday                                        timestamp=1497409962987, value=1987-06-10                                                                                                                  
 info:company                                         timestamp=1497409696404, value=alibaba 

     获取一个id,一个列族中一个列的所有数据     
hbase(main):088:0> get 'member','scutshuxue','info:age'
COLUMN                                                CELL                                                                                                                                                       
 info:age                                             timestamp=1497410251265, value=99   
     通过timestamp来获取两个版本的数据
     hbase(main):057:0> get 'member','scutshuxue',{COLUMN=>'info:age',TIMESTAMP=>1497409677439}
COLUMN                                                CELL                                                                                                                                                       
 info:age                                             timestamp=1497409677439, value=24 

7、更新一条记录(其实更新记录跟插入新记录是一样的)
将scutshuxue的年龄改成99

hbase(main):059:0> put 'member','scutshuxue','info:age' ,'99'
0 row(s) in 0.0140 seconds
hbase(main):061:0> get 'member','scutshuxue','info:age'
COLUMN                                                CELL                                                                                                                                                       
 info:age                                             timestamp=1497410251265, value=99

8、删除一个列族m_id:先将表disable(如果表中之前有数据的话,会把数据清空)
删除一个列族m_id:先将表disable(如果表中之前有数据的话,会把数据清空)

 hbase(main):030:0> disable 'member'
   hbase(main):033:0> is_enabled 'member'
   hbase(main):034:0> alter 'member',{NAME=>'m_id',METHOD=>'delete'}
   最后enable,否则不能进行其他操作
   hbase(main):038:0> enable 'member'

9、删除指定数据

从表删除特定单元格
使用 delete 命令,可以在一个表中删除特定单元格。 delete 命令的语法如下:

delete ‘<table name>’, ‘<row>’, ‘<column name >’, ‘<time stamp>’
下面是一个删除特定单元格和例子。在这里,我们删除salary

hbase(main):006:0> delete 'emp', '1', 'personal data:city',
1417521848375
0 row(s) in 0.0060 seconds
删除表的所有单元格
使用“deleteall”命令,可以删除一行中所有单元格。下面给出是 deleteall 命令的语法。

deleteall ‘<table name>’, ‘<row>’,
这里是使用“deleteall”命令删去 emp 表 row1 的所有单元的一个例子。

hbase(main):007:0> deleteall 'emp','1'
0 row(s) in 0.0240 seconds

10、统计表数据量,count命令
最直接的方式是在hbase shell中执行count的命令可以统计行数。

hbase> count ‘t1′  
hbase> count ‘t1′, INTERVAL => 100000  
hbase> count ‘t1′, CACHE => 1000  
hbase> count ‘t1′, INTERVAL => 10, CACHE => 1000  

其中,INTERVAL为统计的行数间隔,默认为1000,CACHE为统计的数据缓存。这种方式效率很低,如果表行数很大的话不建议采用这种方式。


查询操作

1.scan ‘表名’ #查看所有数据,或带上LIMIT=>10查看随机的10条数据。

2.get是根据主键查看一列
get ‘表名’,’主键’[,’列簇名’][,’列簇名:列名’]

过滤查询表的内容
1.FirstKeyOnlyFilter() 得到每一行的列族info的第一个列

hbase(main):002:0> scan 'student',{COLUMNS=>'info',FILTER=>"(FirstKeyOnlyFilter())"}

2.查看列簇是info,LIMIT是显示的行数,STARTROW是开始行对应的是主键

hbase(main):008:0> scan 'student',{COLUMNS=>['info'],LIMIT=>4,STARTROW=>'200977100710'}

3.查看列簇是info,name

hbase(main):007:0> scan 'student',{COLUMNS=>['info','name'],LIMIT=>4,STARTROW=>'200977100710'}

10、修改表结构

代码如下:

disable‘scores'
alter ‘scores',NAME=>'info'
enable‘scores'

alter命令使用如下(如果无法成功的版本,需要先通用表disable):
a、改变或添加一个列族:

hbase>alter ‘t1′, NAME => ‘f1′, VERSIONS => 5

b、删除一个列族:
代码如下:

hbase>alter ‘t1′, NAME => ‘f1′, METHOD => ‘delete'
hbase>altert1′, ‘delete' => ‘f1

c、也可以修改表属性如MAX_FILESIZE

MEMSTORE_FLUSHSIZE,READONLY,和 DEFERRED_LOG_FLUSH:
hbase>alter ‘t1′, METHOD => ‘table_att', MAX_FILESIZE => '134217728′

总结:HBase的shell操作,一个大概顺序就是操作关键词后跟表名,行名,列名这样的一个顺序,如果有其他条件再用花括号加上。

参考文档:http://www.yiibai.com/hbase/hbase_architecture.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值