您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 企业文化 > 实验4熟悉常用的HBase操作
实验4熟悉常用的HBase操作实验4熟悉常用的HBase操作姓名:包生友专业年级:软件143学号:20140126991.实验目的1.理解HBase在Hadoop体系结构中的角色;2.熟练使用HBase操作常用的Shell命令;3.熟悉HBase操作常用的JavaAPI。2.实验环境操作系统:LinuxHadoop版本:2.6.0或以上版本HBase版本:1.1.2或以上版本JDK版本:1.6或以上版本JavaIDE:Eclipse3.实验内容和完成情况1.编程实现以下指定功能,并用Hadoop提供的HBaseShell命令完成相同任务:(完整可执行代码见代码/QuestionOne.java)(1)列出HBase所有的表的相关信息,例如表名;Shell:List图1列出HBase所有表的相关信息编程://(1)列出HBase所有的表的相关信息,例如表名、创建时间等publicstaticvoidlistTables()throwsIOException{init();//建立连接HTableDescriptorhTableDescriptors[]=admin.listTables();实验4熟悉常用的HBase操作for(HTableDescriptorhTableDescriptor:hTableDescriptors){System.out.println(表名:+hTableDescriptor.getNameAsString());}close();//关闭连接}(2)在终端打印出指定的表的所有记录数据;Shell:scan's1'图2打印指定表的所有记录数据编程://(2)在终端打印出指定的表的所有记录数据publicstaticvoidgetData(StringtableName)throwsIOException{init();Tabletable=connection.getTable(TableName.valueOf(tableName));Scanscan=newScan();ResultScannerscanner=table.getScanner(scan);for(Resultresult:scanner){printRecoder(result);}close();}//打印一条记录的详情publicstaticvoidprintRecoder(Resultresult)throwsIOException{for(Cellcell:result.rawCells()){System.out.print(行健:+newString(CellUtil.cloneRow(cell)));System.out.print(列簇:+newString(CellUtil.cloneFamily(cell)));System.out.print(列:+newString(CellUtil.cloneQualifier(cell)));System.out.print(值:+newString(CellUtil.cloneValue(cell)));实验4熟悉常用的HBase操作System.out.println(时间戳:+cell.getTimestamp());}}(3)向已经创建好的表添加和删除指定的列族或列;p.s:此题请先在Shell中创建s1作为示例表:create's1','score'a)在s1表,添加数据:Shell:put's1','zhangsan','score:Math','69'图3给s1添加数据编程://向表添加数据publicstaticvoidinsertRow(StringtableName,StringrowKey,StringcolFamily,Stringcol,Stringval)throwsIOException{init();Tabletable=connection.getTable(TableName.valueOf(tableName));Putput=newPut(rowKey.getBytes());put.addColumn(colFamily.getBytes(),col.getBytes(),val.getBytes());table.put(put);table.close();close();}insertRow(s1,'zhangsan','score','Math','69')b)在s1表,删除指定的列:Shell:实验4熟悉常用的HBase操作delete's1','zhangsan','score:Math'图4删除数据编程://删除数据publicstaticvoiddeleteRow(StringtableName,StringrowKey,StringcolFamily,Stringcol)throwsIOException{init();Tabletable=connection.getTable(TableName.valueOf(tableName));Deletedelete=newDelete(rowKey.getBytes());//删除指定列族delete.addFamily(Bytes.toBytes(colFamily));//删除指定列delete.addColumn(Bytes.toBytes(colFamily),Bytes.toBytes(col));table.delete(delete);table.close();close();}deleteRow(s1,'zhangsan','score','Math')(4)清空指定的表的所有记录数据;Shell:truncate's1'实验4熟悉常用的HBase操作图5清空指定表的所有记录数据编程://(4)清空指定的表的所有记录数据publicstaticvoidclearRows(StringtableName)throwsIOException{init();TableNametablename=TableName.valueOf(tableName);admin.disableTable(tablename);admin.deleteTable(tablename);HTableDescriptorhTableDescriptor=newHTableDescriptor(tableName);admin.createTable(hTableDescriptor);close();}(5)统计表的行数。Shell:count's1'图6统计表的行数编程://(5)统计表的行数publicstaticvoidcountRows(StringtableName)throwsIOException{init();Tabletable=connection.getTable(TableName.valueOf(tableName));Scanscan=newScan();ResultScannerscanner=table.getScanner(scan);intnum=0;for(Resultresult=scanner.next();result!=null;result=scanner.next()){num++;}实验4熟悉常用的HBase操作System.out.println(行数:+num);scanner.close();close();}2.现有以下关系型数据库中的表和数据,要求将其转换为适合于HBase存储的表并插入数据:学生表(Student)学号(S_No)姓名(S_Name)性别(S_Sex)年龄(S_Age)2015001Zhangsanmale232015003Maryfemale222015003Lisimale24课程表(Course)课程号(C_No)课程名(C_Name)学分(C_Credit)123001Math2.0123002ComputerScience5.0123003English3.0选课表(SC)学号(SC_Sno)课程号(SC_Cno)成绩(SC_Score)201500112300186201500112300369201500212300277201500212300399201500312300198201500312300295①学生Student表p.s:主键的列名是随机分配的,因此无需创建主键列创建表:create'Student','S_No','S_Name','S_Sex','S_Age'实验4熟悉常用的HBase操作图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'实验4熟悉常用的HBase操作图8添加数据并查看图9添加3个学生②课程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','2.0'第二行数据put'Course','c002','C_No','123002'实验4熟悉常用的HBase操作put'Course','c002','C_Name','Computer'put'Course','c002','C_Credit','5.0'第三行数据put'Course','c003','C_No','123003'put'Course','c003','C_Name','English'put'Course','c003','C_Credit','3.0'图11添加数据图12添加3个课程③选课表创建表:create'SC','SC_Sno','SC_Cno','SC_Score'图13创建表SC插入数据:插入数据shell命令实验4熟悉常用的HBase操作第一行数据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','123
本文标题:实验4熟悉常用的HBase操作
链接地址:https://www.777doc.com/doc-4059774 .html