实验4熟悉常用的HBase操作_精品文档Word下载.docx

上传人:b****2 文档编号:13881896 上传时间:2022-10-14 格式:DOCX 页数:18 大小:766.77KB
下载 相关 举报
实验4熟悉常用的HBase操作_精品文档Word下载.docx_第1页
第1页 / 共18页
实验4熟悉常用的HBase操作_精品文档Word下载.docx_第2页
第2页 / 共18页
实验4熟悉常用的HBase操作_精品文档Word下载.docx_第3页
第3页 / 共18页
实验4熟悉常用的HBase操作_精品文档Word下载.docx_第4页
第4页 / 共18页
实验4熟悉常用的HBase操作_精品文档Word下载.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

实验4熟悉常用的HBase操作_精品文档Word下载.docx

《实验4熟悉常用的HBase操作_精品文档Word下载.docx》由会员分享,可在线阅读,更多相关《实验4熟悉常用的HBase操作_精品文档Word下载.docx(18页珍藏版)》请在冰豆网上搜索。

实验4熟悉常用的HBase操作_精品文档Word下载.docx

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 笔试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1