07 HBase操作

1.理解HBase表模型及四维坐标:行键、列族、列限定符和时间戳。

表:HBase采用表来组织数据,表由行和列组成,列划分为若干个列族。
行:每个HBase表都由若干行组成,每个行由行键(row key)来标识。
列族:一个HBase表被分组成许多“列族”(Column Family)的集合,它是基本的访问控制单元。
列限定符:列族里的数据通过列限定符(或列)来定位。
单元格:在HBase表中,通过行、列族和列限定符确定一个“单元格”(cell),单元格中存储的数据没有数据类型,总被视为字节数组byte[]。
时间戳:每个单元格都保存着同一份数据的多个版本,这些版本采用时间戳进行索引。

 

2.启动HDFS,启动HBase,进入HBaseShell命令行。

 

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

 

4.创建表create

  学生   分数
学号 姓名   性别  大数据   操作系统
 73  刘文  男 80 80
 75  肥董  男 85 75

 

5.查看表详情desc

 

6.插入数据put

put 'stuInfo','73','student:name','刘文'
put 'stuInfo','73','student:sex','男'
put 'stuInfo','73','score:bigData','80'
put 'stuInfo','73','score:operatingSystem','80'
put 'stuInfo','75','student:name','肥董'
put 'stuInfo','75','student:sex','男'
put 'stuInfo','75','score:bigData','85'
put 'stuInfo','75','score:operatingSystem','75'

 

7.查看表数据scan

 

8.多版本实验:修改列族版本数,插入多版本数据,查看多版本数据

8.1 修改列族版本数

创建一个hbase表:

create 't1','f1'

查看表结构:

desc 't1'

表结构如下:

表结构显示版本数为1。

修改表结构,让Hbase表支持存储3个VERSIONS的版本列数据

alter 't1',{NAME=>'f1',VERSIONS=>3}

查看表结构:

表结构变为3。

 

8.2 插入多版本数据

插入两行数据并查看:

put 't1','rowkey1','f1:name','liuwen'
put 't1','rowkey1','f1:name','feidong'
get 't1','rowkey1','f1:name'

 

8.3 查看多版本数据

从上面可以看出,插入了两行数据到表中,并且两行数据的rowkey一致,然后使用get命令来获取这一行数据,发现只返回了最新的一行数据。

获取多行数据:

get 't1','rowkey1',{COLUMN=>'f1:name',VERSIONS=>3}

 

9.对比HBase列式表与MySQL的行式表

9.1 在HBase中创建学生课程分数表student并查看表结构。create,describe,put,alter

在hbase中创建表:

create 'stuInfo','student','score'

 

9.2 在mysql中创建学生表student, 课程表 course, 分数表score并查看表结构。

create database hbase;
use hbase;
create table `student`
(
    `id`     int(4)      not null,
    `stu_id` int(4)      not null,
    `course` varchar(20) not null,
    `score`  int(3) default null,
    primary key (`id`)
) engine = InnoDB
  default charset = utf8;

 

9.3 分别插入几行数据,几个版本。put/insert

在hbase中插入数据:

put 'stuInfo','75','student:name','肥董'
put 'stuInfo','75','student:sex','男'
put 'stuInfo','75','score:bigData','75'
put 'stuInfo','75','score:operatingSystem','85'

在mysql中插入数据:

insert into `student`(`id`, `stu_id`, `course`, `score`)
values (2, 20170102, '数据库', 80),
       (3, 20170103, '数据库', 82),
       (4, 20170104, '数据库', 67),
       (5, 20170105, '数据库', 90),
       (6, 20170102, 'C语言', 87),
       (7, 20170102, 'C语言', 80),
       (8, 20170103, 'C语言', 75),
       (9, 20170104, 'C语言', 67),
       (10, 20170105, 'C语言', 92);

 

9.4 查看数据及版本。get,scan/select

get 'stuInfo','75',{COLUMN=>'student:name',VERSIONS=>1} 

scan 'stuInfo'

select * from 'stu';

posted @ 2021-11-05 13:32  thhuang8  阅读(86)  评论(0编辑  收藏  举报