实验4熟悉常用的HBase操作.docx
- 文档编号:17418778
- 上传时间:2023-07-25
- 格式:DOCX
- 页数:14
- 大小:943.33KB
实验4熟悉常用的HBase操作.docx
《实验4熟悉常用的HBase操作.docx》由会员分享,可在线阅读,更多相关《实验4熟悉常用的HBase操作.docx(14页珍藏版)》请在冰点文库上搜索。
实验4熟悉常用的HBase操作
-本页仅作为预览文档封面,使用时请删除本页-
实验4熟悉常用的HBase操作(总11页)
实验4熟悉常用的HBase操作
姓名:
包生友专业年级:
软件143学号:
99
1.实验目的
1.理解HBase在Hadoop体系结构中的角色;
2.熟练使用HBase操作常用的Shell命令;
3.熟悉HBase操作常用的JavaAPI。
2.实验环境
操作系统:
Linux
Hadoop版本:
或以上版本
HBase版本:
或以上版本
JDK版本:
或以上版本
JavaIDE:
Eclipse
3.实验内容和完成情况
1.编程实现以下指定功能,并用Hadoop提供的HBaseShell命令完成相同任务:
(完整可执行代码见代码/)
(1)列出HBase所有的表的相关信息,例如表名;
Shell:
List
图1列出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
123002
ComputerScience
123003
English
选课表(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
1学生Student表
:
主键的列名是随机分配的,因此无需创建主键列
创建表:
create'Student','S_No','S_Name','S_Sex','S_Age'
图7创建Student表
插入数据:
插入数据shell命令
第一行数据
put'Student','s001','S_No','2015001'
put'Student','s001','S_Name','Zhangsan'
put'Student','s001','S_Sex','male'
put'Student','s001','S_Age','23'
第二行数据
put'Student','s002','S_No','2015002'
put'Student','s002','S_Name','Mary'
put'Student','s002','S_Sex','female'
put'Student','s002','S_Age','22'
第三行数据
put'Student','s003','S_No','2015003'
put'Student','s003','S_Name','Lisi'
put'Student','s003','S_Sex','male'
put'Student','s003','S_Age','24'
图8添加数据并查看
图9添加3个学生
2课程Course表
创建表:
create'Course','C_No','C_Name','C_Credit'
图10创建Course表
插入数据:
插入数据shell命令
第一行数据
put'Course','c001','C_No','123001'
put'Course','c001','C_Name','Math'
put'Course','c001','C_Credit',''
第二行数据
put'Course','c002','C_No','123002'
put'Course','c002','C_Name','Computer'
put'Course','c002','C_Credit',''
第三行数据
put'Course','c003','C_No','123003'
put'Course','c003','C_Name','English'
put'Course','c003','C_Credit',''
图11添加数据
图12添加3个课程
3选课表
创建表:
create'SC','SC_Sno','SC_Cno','SC_Score'
图13创建表SC
插入数据:
插入数据shell命令
第一行数据
put'SC','sc001','SC_Sno','2015001'
put'SC','sc001','SC_Cno','123001'
put'SC','sc001','SC_Score','86'
第二行数据
put'SC','sc002','SC_Sno','2015001'
put'SC','sc002','SC_Cno','123003'
put'SC','sc002','SC_Score','69'
第三行数据
put'SC','sc003','SC_Sno','2015002'
put'SC','sc003','SC_Cno','123002'
put'SC','sc003','SC_Score','77'
第四行数据
put'SC','sc004','SC_Sno','2015002'
put'SC','sc004','SC_Cno','123003'
put'SC','sc004','SC_Score','99'
第五行数据
put'SC','sc005','SC_Sno','2015003'
put'SC','sc005','SC_Cno','123001'
put'SC','sc005','SC_Score','98'
第六行数据
put'SC','sc006','SC_Sno','2015003'
put'SC','sc006','SC_Cno','123002'
put'SC','sc006','SC_Score','95'
图14插入数据
图15数据显示
图16QuestionOne运行后控制台消息
同时,请编程完成以下指定功能:
(完整可执行代码见代码/)
(1)createTable(StringtableName,String[]fields)
创建表,参数tableName为表的名称,字符串数组fields为存储记录各个域名称的数组。
要求当HBase已经存在名为tableName的表的时候,先删除原有的表,然后再创建新的表。
代码:
publicstaticvoidcreateTable(StringtableName,String[]fields)throwsIOException{
init();
TableNametablename=(tableName);
if(tablename)){
"tableisexists!
");
(tablename);
(tablename);plit(":
");
(cols[0].getBytes(),cols[1].getBytes(),values[i].getBytes());
(put);
}
();
close();
}
(3)scanColumn(StringtableName,Stringcolumn)
浏览表tableName某一列的数据,如果某一行记录中该列数据不存在,则返回null。
要求当参数column为某一列族名称时,如果底下有若干个列限定符,则要列出每个列限定符代表的列的数据;当参数column为某一列具体名称(例如“Score:
Math”)时,只需要列出该列的数据。
代码:
publicstaticvoidscanColumn(StringtableName,Stringcolumn)throwsIOException{
init();
Tabletable=(tableName));
Scanscan=newScan();
(column));
ResultScannerscanner=(scan);
for(Resultresult=();result!
=null;result=()){
showCell(result);
}
();
close();
}
利用HBase和MapReduce完成如下任务:
假设HBase有2张表,表的逻辑视图及部分数据如下所示:
表逻辑视图及部分数据
书名(bookName)
价格(price)
DatabaseSystemConcept
30$
ThinkinginJava
60$
DataMining
25$
要求:
从HBase读出上述两张表的数据,对“price”的排序,并将结果存储到HBase中。
操作方法如下:
create'book','bookName'
put'book','val_60$','bookName:
','ThinkinginJava'
put'book','val_20$','bookName:
','DatabaseSystemConcept'
put'book','val_30$','bookName:
','DataMining'
scan#此处查询所有的数据,就会把按照rowKey自动排序
图18创建book表
图19查看book中详情(已排序)
4.出现问题
1.输入代码时,有许多报错。
2.Delete后list发现还是为1row,以为无法删除。
3.给表中输入数据时,没有注意格式,导致错误。
5.解决方案
1.需要导入相应的jar包。
2.“list”为列出HBase中表格的命令,查看表中的详情需要用“scan”命令。
3.添加数据需要一项一项添加,而且要注意空格以及符号的使用。
6.实验心得
通过此次实验,使我我理解HBase在Hadoop体系结构中的角色,能够使用HBase操作常用的Shell命令,也熟悉了HBase操作常用的JavaAPI。
在一定程度上达到了实验目的。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 熟悉 常用 HBase 操作