07 HBase操作
1.理解HBase表模型及四维坐标:行键、列族、列限定符和时间戳。
表的每一行由一个或多个列族组成,一个列族中可以包含任意多个列。在同一个表模式下,每行所包含的列族是相同的,也就是说,列族的个数与名称都是相同的,但是每一行中的每个列族中列的个数可以不同,如图 1 所示。
(1)表(Table):HBase采用表来组织数据,表由许多行和列组成,列划分为多个列族。
(2).行(Row):在表里面,每一行代表着一个数据对象。每一行都是由一个行键(Row Key)和一个或者多个列组成的。行键是行的唯一标识,行键并没有什么特定的数据类型,以二进制的字节来存储,按字母顺序排序。因为表的行是按照行键顺序来进行存储的,所以行键的设计相当重要。设计行键的一个重要原则就是相关的行键要存储在接近的位置.访问表中的行只有 3 种方式:通过单个行键获取单行数据;通过一个行键的区间来访问给定区间的多行数据;全表扫描。
(3) 列(Column):列由列族(Column Family)和列限定符(Column Qualifier)联合标识,由“:”进行间隔,如 family:qualifiero
(4)列族(Column Family):在定义 HBase 表的时候需要提前设置好列族,表中所有的列都需要组织在列族里面。列族一旦确定后,就不能轻易修改,因为它会影响到 HBase 真实的物理存储结构,但是列族中的列限定符及其对应的值可以动态增删。表中的每一行都有相同的列族,但是不需要每一行的列族里都有一致的列限定符,所以说是一种稀疏的表结构,这样可以在一定程度上避免数据的冗余。HBase 中的列族是一些列的集合。一个列族的所有列成员都有着相同的前缀,例如,courses:history 和 courses:math 都是列族 courses 的成员。“:”是列族的分隔符,用来区分前缀和列名。列族必须在表建立的时候声明,列随时可以新建。
(5) 列限定符(Column Qualifier):列族中的数据通过列限定符来进行映射。列限定符不需要事先定义,也不需要在不同行之间保持一致。列限定符没有特定的数据类型,以二进制字节来存储。
(7).时间戳(Timestamp):默认情况下,每一个单元中的数据插入时都会用时间戳来进行版本标识。读取单元数据时,如果时间戳没有被指定,则默认返回最新的数据;写入新的单元数据时,如果没有设置时间戳,则默认使用当前时间。每一个列族的单元数据的版本数量都被 HBase 单独维护,默认情况下,HBase 保留 3 个版本数据。
2.启动HDFS,启动HBase,进入HBaseShell命令行。

3.列出HBase中所有的表信息list

4.创建表create

5.查看表详情desc

6.插入数据put

7.查看表数据scan

8.多版本实验:修改列族版本数,插入多版本数据,查看多版本数
(1)创建查看

(2)修改查看

(3)插入数据

(4)查看多版本数据

9.对比HBase列式表与MySQL的行式表
- 在HBase中创建学生课程分数表student并查看表结构。create,describe,put
![]()
- 在mysql中创建学生表student, 课程表 course, 分数表score并查看表结构。
![]()
-
![]()
![]()
- 分别插入几行数据,几个版本。put/insert
![]()
- 查看数据及版本。get,scan/select
![]()
|
|
info |
score |
||||||
|
name |
age |
sex |
OS |
BD |
||||
|
row1 |
…3624 |
xianming |
…3447 |
19 |
85 |
90 |
||
|
row2 |
…6395 …7611 |
19 22 |
||||||
|
row3 |
…4968 |
femal |
|
|||||






浙公网安备 33010602011771号