码迷,mamicode.com
首页 > 系统相关 > 详细

HBase Shell相关

时间:2015-09-11 20:40:56      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:

1.进入hbase命令行

./hbase shell

2.基本命令

  显示hbase中的表List

list

  查询user表中的所有信息Scan

scan users

  清空user表中的数据Truncate (等同于disable + drop + create)

truncate users

  删除表Drop

disable user
drop user

3.修改表结构

 首先停用user表(新版本不用)disable ‘user‘,最后再启用表 enable ‘user‘

  添加新的列族f1

alter user,NAME =>f1

  删除一个列族f1(不指定METHOD,则默认为添加列族

alter user, NAME => f1, METHOD => delete 
或者
alter user, delete => f1

  添加列族f1同时删除列族f2

alter user, {NAME => f1}, {NAME => f2, METHOD => delete}

  将user表的f1列族版本号改为5

alter people, NAME => info, VERSIONS => 5

4.创建表
  创建user表,包含info、data两个列族

create user, info, data
create user, {NAME => info, VERSIONS => 3},{NAME => ‘data‘, VERSIONS => ‘3‘}

5.删除数据
  删除user表row key为rk0001,列标示符为info:name的数据

delete user, rk0001, info:name

  删除user表row key为rk0001,列标示符为info:name,timestamp为1392383705316的数据

delete user, rk0001, info:name, 1392383705316

6.增加数据

  向user表中插入信息,row key为rk0001,列族info中添加name列标示符,值为zhangsan

put user, rk0001, info:name, zhangsan

7.查找数据
  获取user表中row key为rk0001的所有信息

get user, rk0001

  获取user表中row key为rk0001,info列族的所有信息

get user, rk0001, info

  获取user表中row key为rk0001,info列族的name、age列标示符的信息

get user, rk0001, info:name, info:age

  获取user表中row key为rk0001,info和data两个列族的信息

get user, rk0001, info, data
get user, rk0001, {COLUMN => [‘info‘, ‘data‘]}
get user, rk0001, {COLUMN => [‘info:name‘, ‘data:pic‘]}

  获取user表中row key为rk0001,列族为info,版本号最新5个的信息

get ‘user, rk0001, {COLUMN => info, VERSIONS => 5}
get user, rk0001, {COLUMN => info:name, VERSIONS => 5}

  //通过时间戳的范围查找数据cell,TIMERANGE=>[t1,t2] 是包含t1但不包含t2的时间段

  //scan后面只有两个参数,只能跟 RowKey + 限制条件

get user, rk0001, {COLUMN => info:name, VERSIONS => 5, TIMERANGE => [1392368783980, 1392380169184]} 
scan
user, {TIMERANGE => [1392368783980, 1392380169184]}

  //查询user表中列族为info,RowKey范围是[rk0001, rk0003)的数据不能使用get

scan people, {COLUMNS => info, STARTROW => rk0001, ENDROW => rk0003}

  //设置cell只保存3个VERSION版本,旧的多余的就会被覆盖掉

  //但是使用以下命令,还是会查询出5个版本,这是因为旧的版本会被打上删除标记,但在内存中,还未flush
  //当hbase重启之后,被打上标记的记录,则不会在被查到

  //RAW => true表示只能对列族COLUMNS => ‘info‘有效,对于COLUMNS => ‘info:age‘ 则报错

scan users, {COLUMNS => info, RAW => true, VERSIONS => 5}

 

  //查询user表中RowKey以rk字符开头的【FILTER关键字】

scan user,{FILTER=>"PrefixFilter(rk)"}

  //获取二进制binary的值为“中国”的cell

  //这是因为汉字存储在hbase中,是以二进制的形式存储【ValueFilter】

put user, rk0002, info:nationality, 中国
get user, rk0002, {FILTER => "ValueFilter(=, binary:中国)"}

  //获取user表中RowKey为rk0001,列标示符过滤器(QualifierFilter),即列名中含有a的信息

get people, rk0001, {FILTER => "(QualifierFilter(=,substring:a))"}

  //查询user表中列族为info和data且列标示符中含有a字符的信息

scan people, {COLUMNS => [‘info‘, ‘data‘], FILTER => "(QualifierFilter(=,substring:a))"}

HBase Shell相关

标签:

原文地址:http://www.cnblogs.com/skyl/p/4801997.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!