HBase其实就是一个数据库,无非就是存储和增删改查,那咱们先从数据模型提及把
shell
这里有一张表,是用关系型数据库的思惟画出来的表,这样比较易于理解:
数据库
Table(表格)code
没啥说的,和关系型数据库同样,由多行组成blog
Row(行)开发
包含一个key和一个或者多个列。行按照RowKey字典序存储在表格中。get
Column Family(列族)string
能够理解为一组列的集合,HBase官方建议尽可能的减小ColumnFamily的数量。io
Column Qualifier(列)table
一个 Column Family 下面有多个Column Qualifier,im
Timestamp(时间戳)
时间戳是写在值旁边的一个用于区分值的版本的数据。能够开发者本身指定,默认状况下,时间戳表示的是当数据写入时RegionSever的时间点。
Cell(单元)
单元是由行、列族、列、值和表明值版本的时间戳组成的。举个例子:
A column=CF1:C1_1, timestamp=T1, value=nice
上面表的其中一行,在hbase shell 中显示实际是这样的。
hbase(main):006:0> scan 'table_name' ROW COLUMN+CELL A column=CF1:C1_1, timestamp=T1, value=nice A column=CF1:C1_2, timestamp=T1, value=handsome A column=CF1:C2_1, timestamp=T1, value=china A column=CF1:C2_2, timestamp=T1, value=guangdong
B column=CF1:C1_1, timestamp=T1, value=nice
注意后方高能,是一些经常使用的命令,看完能够收藏一波。
建立表
create '表名称', '列族名称1','列族名称2','列族名称N'
添加记录/更新记录
put '表名称', '行名称', '列名称:', '值'
查看记录
get '表名称', '行名称'
查看表中的记录总数
count '表名称'
删除记录
delete '表名' ,'行名称' , '列名称'
删除一张表
先要屏蔽该表,才能对该表进行删除,第一步 disable '表名称' 第二步 drop '表名称'
查看全部记录
scan "表名称"
查看某个表某个列中全部数据
scan "表名称" , {COLUMNS=>'列族名称:列名称'}
经过rowkey过滤,匹配出rowkey中含uncle的数据。
> scan 'table_name', FILTER=>"RowFilter(=,'substring:uncle')"
经过rowkey过滤,匹配出rowkey等于uncle666的数据。
> scan 'table_name', FILTER=>"RowFilter(=,'binary:uncle666')"
经过rowkey过滤,匹配出rowkey小于等于uncle666的数据。
> scan 'table_name', FILTER=>"RowFilter(<=,'binary:uncle666')"
匹配从rowkey为uncle666开始读50行
> scan 'table_name',{COLUMNS=>['cf:column'],LIMIT => 50,STARTROW=>'uncle666'}
匹配时间范围
> scan 'table_name',{COLUMNS=>['cf:column'],LIMIT => 50,TIMERANGE=>'1533530400000,1535930400000'}
经过rowkey前缀过滤,匹配出rowkey前缀为666的数据。
> scan 'table_name', FILTER=>"PrefixFilter('666')"
经过value过滤,匹配出value含uncle的数据。
> scan 'table_name', FILTER=>"ValueFilter(=,'substring:uncle')"
经过列簇过滤,匹配出列簇含f的数据。
> scan 'table_name', FILTER=>"FamilyFilter(=,'substring:f')"