1.实验内容与完成情况:(实验具体步骤和实验截图说明)(一) MySQL 数据库操作 学生表 StudentName English Math Computerzhangsan 69 86 77lisi 55 100 88根据上面给出的 Student 表,在 MySQL 数据库中完成如下操作:(1)在 MySQL 中创建 Student 表,并录入数据;(2)用 SQL 语句输出 Student 表中的所有记录;(3)查询 zhangsan 的 Computer 成绩;(4)修改 lisi 的 Math 成绩, 改为 95。
根据上面已经设计出的 Student 表,使用 MySQL 的 JAVA 客户端编程实现以下操作:(1)向 Student 表中添加如下所示的一条记录:scofield 45 89 100源代码:package com.mysql;import java.sql.*;public class MysqlTest { static final String driver="com.mysql.jdbc.Driver"; static final String DB="jdbc:mysql://localhost/test1"; static final String user="root"; static final String password="wangli"; public static void main(String[] args) { Connection conn=null; Statement stmt=null; try { Class.forName(driver); conn=DriverManager.getConnection(DB,user,password); stmt=conn.createStatement(); String sql="insert into Student values(‘scofied‘,45,89,100)"; stmt.executeUpdate(sql); System.out.println("插入成功!"); } catch (SQLException | ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally { if(stmt!=null) { try { stmt.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(conn!=null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } }}(2) 获取 scofield 的 English 成绩信息源代码:package com.mysql;import java.sql.*;public class MysqlTest { static final String driver="com.mysql.jdbc.Driver"; static final String DB="jdbc:mysql://localhost/test1"; static final String user="root"; static final String password="wangli"; public static void main(String[] args) { Connection conn=null; Statement stmt=null; ResultSet rs=null; try { Class.forName(driver); conn=DriverManager.getConnection(DB,user,password); stmt=conn.createStatement(); String sql="select Name,English from Student where Name=‘scofied‘ "; rs=stmt.executeQuery(sql); System.out.println("name"+"\t\t"+"English"); while(rs.next()) { System.out.print(rs.getString(1)+"\t\t"); System.out.println(rs.getString(2)); } System.out.println("输出完成!"); } catch (SQLException | ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally { if(stmt!=null) { try { stmt.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(conn!=null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } }}(二) HBase 数据库操作 学生表 Studentname scoreEnglish Math Computerzhangsan 69 86 77lisi 55 100 88根据上面给出的学生表 Student 的信息, 执行如下操作:(1) 用 Hbase Shell 命令创建学生表 Student;(2)用 scan 命令浏览 Student 表的相关信息;(3)查询 zhangsan 的 Computer 成绩;(4)修改 lisi 的 Math 成绩, 改为 95。
2.根据上面已经设计出的 Student 表, 用 HBase API 编程实现以下操作:(1)添加数据: English:45 Math:89 Computer:100scofield 45 89 100源代码:package hbase_test;import java.io.IOException;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.hbase.HBaseConfiguration;import org.apache.hadoop.hbase.TableName;import org.apache.hadoop.hbase.client.Admin;import org.apache.hadoop.hbase.client.Connection;import org.apache.hadoop.hbase.client.ConnectionFactory;import org.apache.hadoop.hbase.client.Put;import org.apache.hadoop.hbase.client.Table;public class HBaseTest { public static Configuration configuration; public static Connection connection; public static Admin admin; public static void main(String[] args) { configuration=HBaseConfiguration.create(); configuration.set("hbase.rootdir", "hdfs://localhost:9000/hbase"); try { connection=ConnectionFactory.createConnection(configuration); admin=connection.getAdmin(); insertRow("Student","scofield","score","English","45"); insertRow("Student","scofield","score","Math","89"); insertRow("Student","scofield","score","Computer","100"); System.out.println("插入成功!"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } close(); } public static void insertRow(String tableName, String rowKey, String colFamily, String col, String val) { try { Table table = connection.getTable(TableName.valueOf(tableName)); Put put = new Put(rowKey.getBytes()); put.addColumn(colFamily.getBytes(), col.getBytes(), val.getBytes()); table.put(put); table.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void close() { try { if (admin != null) { admin.close(); } if(null!=connection) { connection.close(); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }}(2)获取 scofield 的 English 成绩信息。 源代码:package hbase_test;import java.io.IOException;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.hbase.Cell;import org.apache.hadoop.hbase.CellUtil;import org.apache.hadoop.hbase.HBaseConfiguration;import org.apache.hadoop.hbase.TableName;import org.apache.hadoop.hbase.client.Admin;import org.apache.hadoop.hbase.client.Connection;import org.apache.hadoop.hbase.client.ConnectionFactory;import org.apache.hadoop.hbase.client.Get;import org.apache.hadoop.hbase.client.Put;import org.apache.hadoop.hbase.client.Result;import org.apache.hadoop.hbase.client.Table;public class HBaseTest2 { public static Configuration configuration; public static Connection connection; public static Admin admin; public static void main(String[] args) { configuration=HBaseConfiguration.create(); configuration.set("hbase.rootdir", "hdfs://localhost:9000/hbase"); try { connection=ConnectionFactory.createConnection(configuration); admin=connection.getAdmin(); getData("Student","scofield","score","English"); System.out.println("输出完成!"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } close(); } public static void getData(String tableName, String rowKey, String colFamily, String col) { try { Table table = connection.getTable(TableName.valueOf(tableName)); Get get=new Get(rowKey.getBytes()); get.addColumn(colFamily.getBytes(), col.getBytes()); Result result=table.get(get); showCell(result); table.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } private static void showCell(Result result) { Cell[] cells=result.rawCells(); for(Cell cell:cells) { System.out.println("RowName:"+new String(CellUtil.cloneRow(cell))+" "); System.out.println("Timetamp:"+cell.getTimestamp()+" "); System.out.println("column Family"+new String(CellUtil.cloneFamily(cell))+" "); System.out.println("row Name:"+new String(CellUtil.cloneValue(cell))+" "); System.out.println("value"+new String(CellUtil.cloneValue(cell))+" "); } } public static void close() { try { if (admin != null) { admin.close(); } if(null!=connection) { connection.close(); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }}(三) Redis 数据库操作Student 键值对如下:zhangsan:{English: 69Math: 86Computer: 77}lisi:{English: 55Math: 100Computer: 88}1. 根据上面给出的键值对, 完成如下操作:(1)用 Redis 的哈希结构设计出学生表 Student (键值可以用 student.zhangsan 和 student.lisi来表示两个键值属于同一个表);(2) 用 hgetall 命令分别输出 zhangsan 和 lisi 的成绩信息;(3) 用 hget 命令查询 zhangsan 的 Computer 成绩;(4)修改 lisi 的 Math 成绩, 改为 95。
2.根据上面已经设计出的学生表 Student, 用 Redis 的 JAVA 客户端编程(jedis),实现如下操作:(1)添加数据: English:45 Math:89 Computer:100该数据对应的键值对形式如下:scofield:{English: 45Math: 89Computer: 100}(四) MongoDB 数据库操作Student 文档如下:{“name”: “zhangsan”,“score”: {“English”: 69,“Math”: 86,“Computer”: 77} } {“name”: “lisi”,“score”: {“English”: 55,“Math”: 100,“Computer”: 88} }1.根据上面给出的文档,完成如下操作:(1) 用 MongoDB Shell 设计出 student 集合;(3)用 find()方法输出两个学生的信息;(4)用 find()方法查询 zhangsan 的所有成绩(只显示 score 列);(4)修改 lisi 的 Math 成绩, 改为 95。
2.根据上面已经设计出的 Student 集合,用 MongoDB 的 Java 客户端编程,实现如下操作:(1) 添加数据: English:45 Math:89 Computer:100与上述数据对应的文档形式如下:{“name”: “scofield”,“score”: {“English”: 45,“Math”: 89,“Computer”: 100} }源代码:package com.mongo;import java.util.ArrayList;import java.util.List;import org.bson.Document;import com.mongodb.MongoClient;import com.mongodb.client.MongoCollection;import com.mongodb.client.MongoDatabase;public class MongoTest { public static void main(String[] args) { MongoClient mongoClient=new MongoClient("localhost",27017); MongoDatabase mongoDatabase=mongoClient.getDatabase("student"); MongoCollection<Document> collection=mongoDatabase.getCollection("student"); Document document=new Document("name","scofield").append("score", new Document("English",45).append("Math", 89).append("Computer", 100)); List<Document> documents=new ArrayList<Document>(); documents.add(document); collection.insertMany(documents); System.out.println("文档插入成功!"); }}实验截图:(2)获取 scofield 的所有成绩成绩信息(只显示 score 列) 源代码:package com.mongo;import org.bson.Document;import com.mongodb.MongoClient;import com.mongodb.client.MongoCollection;import com.mongodb.client.MongoCursor;import com.mongodb.client.MongoDatabase;public class MongoTest2 { public static void main(String[] args) { MongoClient mongoClient=new MongoClient("localhost",27017); MongoDatabase mongoDatabase=mongoClient.getDatabase("student"); MongoCollection<Document> collection=mongoDatabase.getCollection("student"); MongoCursor<Document> cursor=collection.find(new Document("name","scofield")). projection(new Document("score",1).append("_id", 0)).iterator(); while(cursor.hasNext()) System.out.println(cursor.next().toJson()); }}