Hbase数据模型及Hbase Shell
目录
1 数据模型
1.1 相关名词概念
表(Table):类似于关型数据库中的表
行(Row):以行键进行唯一标识,代表一个数据对象,按照字典顺序由低到高存储在表。
列族(Column Family):列的集合,支持动态扩展(无需预定义列的类型及数量,可随意增删),所有列默认以字符串形式存储在表中,用户可根据需求自行进行数据类型转换。
列标识(Column Qualifier):没有固定的数据类型,以二进制字节存储,对列进行定位。
单元格(Cell):以行键、列族、列标识共同确定一个单元格,单元格没有固定的数据类型,以二进制字节存储,可用<Row Key,Column Family : Column Qualifier,Timestamp>来访问。
时间戳(Timestamp):表示数据的版本信息,如不设置默认为当前时间。
1.2 模型分析
与传统关型数据库的区别
关型数据库 | Hbase |
表结构和数据类型需要预定义 | 表结构和数据类型不需要预定义 |
添加列需要修改表结构 | 支持动态扩展 |
NULL占用存储空间 | NULL不占用存储空间 |
面向行存储 | 面向列存储 |
2 Hbase Shell操作
2.1 命名空间
关型数据库中的所有表存储在数据库中,数据库作为表的一个逻辑分组。Hbase中存在一种类似与数据库的表的逻辑分组——命名空间。
2.2 表操作
2.2.1 创建表
表名区分大小写,所有的字符串都必须包含在单引号里。
2.2.2 更改表结构
在对表进行更改或者删除时,必须先禁用表,等修改之后必须解禁表。
2.2.3 表的其他操作
Hbase表最少要包含一个列族,当表中只有一个列族的时候将无法删除该表。
2.3 数据操作
2.3.1 添加数据(put)
列支持动态扩展可以使之前未定义的值,列族则必须是提前创建好的。
put命令一次只能插入一个单元格的数据,单元格存在数据的情况下是修改数据
2.3.2 删除数据(delete)
delete操作并不会马上删除数据,只是将对应的数据打上删除标记(tombstone),只有在数据产生合并时,数据才会被删除。
2.3.3 获取数据(get|scan)
get和scan命令都可以配合参数指定进行查询想要更加精准的查询就要配合过滤器进行查询
3 过滤器
3.1 比较运算符和比较器
比较运算符 | 描述 | 比较器 | 描述 | |
= | 等于 | BinaryComparator | 匹配完整字节数组 | |
> | 大于 | BinaryPrefixComparator | 匹配字节数组前缀 | |
>= | 大于等于 | BitComparator | 匹配比特位 | |
< | 小于 | NullParator | 匹配空值 | |
<= | 小于等于 | RegexStringComparator | 匹配正则表达式 | |
!= | 不等于 | SubStringComparator | 匹配子串 |
过滤器语法:scan 'Student' , Filter => "过滤器 (比较运算符 , '比较器')"
注意引号的使用(单引还是双引)
3.2 行键过滤器
3.3 列族与列过滤器
3.4 值过滤器
3.5 其他过滤器
- 点赞
- 收藏
- 关注作者
评论(0)