实验四:熟悉常用的HBase操作
实验概览
在本次实验中,我们将深入探索HBase在Hadoop生态系统中的角色,并熟练掌握常用的HBase Shell命令和Java API操作。通过这些实践,我们能够更好地理解HBase的工作原理以及如何在实际项目中应用。
实验目的
1. 理解HBase在Hadoop体系结构中的角色;
2. 熟练使用HBase操作常用的Shell命令;
3. 熟悉HBase操作常用的Java API。
实验平台
操作系统:Linux
Hadoop版本:1.2.1或以上版本
HBase版本:0.98.9
JDK版本:1.6或以上版本
Java IDE:Eclipse
实验内容和要求
用Hadoop提供的HBase Shell命令完成以下任务:
HBase Shell命令操作
- 列出所有表:使用
list
命令查看HBase中所有表的相关信息,如表名和表结构。 - 打印表记录:使用
scan
命令在终端打印指定表的所有记录数据。 - 添加和删除列族或列:使用
put
命令向已创建的表添加数据,以及删除指定的列族或列。 - 清空表记录:使用
truncate
命令清空指定表的所有记录数据。 - 统计表行数:使用
count
命令统计表的行数。
关系型数据库到HBase的数据迁移
我们将关系型数据库中的表和数据转换为适合HBase存储的表,并插入数据。以下是涉及的表和数据:
学生表(Student)
学号(S_No) | 姓名(S_Name) | 性别(S_Sex) | 年龄(S_Age) |
2015001 | Zhangsan | male | 23 |
2015003 | Mary | female | 22 |
2015003 | Lisi | male | 24 |
课程表(Course)
课程号(C_No) | 课程名(C_Name) | 学分(C_Credit) |
123001 | Math | 2.0 |
123002 | Computer Science | 5.0 |
123003 | English | 3.0 |
选课表(SC)
学号(SC_Sno) | 课程号(SC_Cno) | 成绩(SC_Score) |
2015001 | 123001 | 86 |
2015001 | 123003 | 69 |
2015002 | 123002 | 77 |
2015002 | 123003 | 99 |
2015003 | 123001 | 98 |
2015003 | 123002 | 95 |
HBase表创建与数据操作
同时,请完成以下指定功能:
(1)创建以上表
create 'Student', 'info'
create 'Course', 'details'
create 'SC', 'record'
(2)在多个表添加3行(学生)
插入学生表数据:
put 'Student', '2015001', 'info:S_No', '2015001'
put 'Student', '2015001', 'info:S_Name', 'Zhangsan'
put 'Student', '2015001', 'info:S_Sex', 'male'
put 'Student', '2015001', 'info:S_Age', '23'
put 'Student', '2015002', 'info:S_No', '2015002'
put 'Student', '2015002', 'info:S_Name', 'Mary'
put 'Student', '2015002', 'info:S_Sex', 'female'
put 'Student', '2015002', 'info:S_Age', '22'
put 'Student', '2015003', 'info:S_No', '2015003'
put 'Student', '2015003', 'info:S_Name', 'Lisi'
put 'Student', '2015003', 'info:S_Sex', 'male'
put 'Student', '2015003', 'info:S_Age', '24'
插入课程表数据:
put 'Course', '123001', 'details:C_No', '123001'
put 'Course', '123001', 'details:C_Name', 'Math'
put 'Course', '123001', 'details:C_Credit', '2.0'
put 'Course', '123002', 'details:C_No', '123002'
put 'Course', '123002', 'details:C_Name', 'Computer Science'
put 'Course', '123002', 'details:C_Credit', '5.0'
put 'Course', '123003', 'details:C_No', '123003'
put 'Course', '123003', 'details:C_Name', 'English'
put 'Course', '123003', 'details:C_Credit', '3.0'
插入选课表数据:
put 'SC', '2015001123001', 'record:SC_Sno', '2015001'
put 'SC', '2015001123001', 'record:SC_Cno', '123001'
put 'SC', '2015001123001', 'record:SC_Score', '86'
put 'SC', '2015001123003', 'record:SC_Sno', '2015001'
put 'SC', '2015001123003', 'record:SC_Cno', '123003'
put 'SC', '2015001123003', 'record:SC_Score', '69'
put 'SC', '2015002123002', 'record:SC_Sno', '2015002'
put 'SC', '2015002123002', 'record:SC_Cno', '123002'
put 'SC', '2015002123002', 'record:SC_Score', '77'
进行部分结果展示:
(3)在多个表中修改指定的行指定列的数据
put 'Student', '2015001', 'info:S_Age', '24'
(4)在多个表删除表指定的行的记录
删除学生表中的一行数据:
deleteall 'Student', '2015001'
删除选课表中的一个单元格数据:
delete 'SC', '2015001123001', 'record:SC_Score'