实验4熟悉常用的HBase操作_精品文档Word下载.docx
- 文档编号:13881896
- 上传时间:2022-10-14
- 格式:DOCX
- 页数:18
- 大小:766.77KB
实验4熟悉常用的HBase操作_精品文档Word下载.docx
《实验4熟悉常用的HBase操作_精品文档Word下载.docx》由会员分享,可在线阅读,更多相关《实验4熟悉常用的HBase操作_精品文档Word下载.docx(18页珍藏版)》请在冰豆网上搜索。
3.实验内容和完成情况
1.编程实现以下指定功能,并用Hadoop提供的HBaseShell命令完成相同任务:
(完整可执行代码见代码/QuestionOne.java)
(1)列出HBase所有的表的相关信息,例如表名;
Shell:
List
图1列出HBase所有表的相关信息
编程:
//
(1)列出HBase所有的表的相关信息,例如表名、创建时间等
publicstaticvoidlistTables()throwsIOException{
init();
//建立连接
HTableDescriptorhTableDescriptors[]=admin.listTables();
for(HTableDescriptorhTableDescriptor:
hTableDescriptors){
System.out.println("
表名:
"
+hTableDescriptor.getNameAsString());
}
close();
//关闭连接
}
(2)在终端打印出指定的表的所有记录数据;
scan'
s1'
图2打印指定表的所有记录数据
//
(2)在终端打印出指定的表的所有记录数据
publicstaticvoidgetData(StringtableName)throwsIOException{
Tabletable=connection.getTable(TableName.valueOf(tableName));
Scanscan=newScan();
ResultScannerscanner=table.getScanner(scan);
for(Resultresult:
scanner){
printRecoder(result);
//打印一条记录的详情
publicstaticvoidprintRecoder(Resultresult)throwsIOException{
for(Cellcell:
result.rawCells()){
System.out.print("
行健:
"
+newString(CellUtil.cloneRow(cell)));
列簇:
+newString(CellUtil.cloneFamily(cell)));
列:
+newString(CellUtil.cloneQualifier(cell)));
值:
+newString(CellUtil.cloneValue(cell)));
时间戳:
+cell.getTimestamp());
(3)向已经创建好的表添加和删除指定的列族或列;
p.s:
此题请先在Shell中创建s1作为示例表:
create'
'
score'
a) 在s1表,添加数据:
put'
zhangsan'
score:
Math'
69'
图3给s1添加数据
//向表添加数据
publicstaticvoidinsertRow(StringtableName,StringrowKey,StringcolFamily,Stringcol,Stringval)throwsIOException{
Putput=newPut(rowKey.getBytes());
put.addColumn(colFamily.getBytes(),col.getBytes(),val.getBytes());
table.put(put);
table.close();
insertRow("
s1"
)
b) 在s1表,删除指定的列:
delete'
图4删除数据
//删除数据
publicstaticvoiddeleteRow(StringtableName,StringrowKey,StringcolFamily,Stringcol)throwsIOException{
Deletedelete=newDelete(rowKey.getBytes());
//删除指定列族
delete.addFamily(Bytes.toBytes(colFamily));
//删除指定列
delete.addColumn(Bytes.toBytes(colFamily),Bytes.toBytes(col));
table.delete(delete);
deleteRow("
(4)清空指定的表的所有记录数据;
truncate'
图5清空指定表的所有记录数据
编程:
//(4)清空指定的表的所有记录数据
publicstaticvoidclearRows(StringtableName)throwsIOException{
TableNametablename=TableName.valueOf(tableName);
admin.disableTable(tablename);
admin.deleteTable(tablename);
HTableDescriptorhTableDescriptor=newHTableDescriptor(tableName);
admin.createTable(hTableDescriptor);
(5)统计表的行数。
count'
图6统计表的行数
//(5)统计表的行数
publicstaticvoidcountRows(StringtableName)throwsIOException{
intnum=0;
for(Resultresult=scanner.next();
result!
=null;
result=scanner.next()){
num++;
System.out.println("
行数:
+num);
scanner.close();
2.现有以下关系型数据库中的表和数据,要求将其转换为适合于HBase存储的表并插入数据:
学生表(Student)
学号(S_No)
姓名(S_Name)
性别(S_Sex)
年龄(S_Age)
2015001
Zhangsan
male
23
2015003
Mary
female
22
Lisi
24
课程表(Course)
课程号(C_No)
课程名(C_Name)
学分(C_Credit)
123001
Math
2.0
123002
ComputerScience
5.0
123003
English
3.0
选课表(SC)
学号(SC_Sno)
课程号(SC_Cno)
成绩(SC_Score)
86
69
2015002
77
99
98
95
①学生Student表
主键的列名是随机分配的,因此无需创建主键列
创建表:
create'
Student'
S_No'
S_Name'
S_Sex'
S_Age'
图7创建Student表
插入数据:
插入数据shell命令
第一行数据
put'
s001'
2015001'
Zhangsan'
male'
23'
第二行数据
s002'
2015002'
Mary'
female'
22'
第三行数据
s003'
2015003'
Lisi'
24'
图8添加数据并查看
图9添加3个学生
②课程Course表
Course'
C_No'
C_Name'
C_Credit'
图10创建Course表
插入数据:
c001'
C_N
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 熟悉 常用 HBase 操作 精品 文档
![提示](https://static.bdocx.com/images/bang_tan.gif)