上课跟着老师做的简单学生信息HBase数据库
首先对操作数据库的方法进行封装;创建命名空间、创建表、插入数据、查询数据、删除数据
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.*;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.util.Bytes;
import java.io.IOException;
public class HbaseUtil {
// 连接
public static Connection GetConn() throws IOException {
Configuration conf = HBaseConfiguration.create();
Connection connection = ConnectionFactory.createConnection(conf);
return connection;
}
// 操作对象
public static Admin GetAdmin() throws IOException {
return GetConn().getAdmin();
}
// 创建命名空间
public static boolean Exec_CreateNameSpace(String name) throws IOException {
try {
GetAdmin().getNamespaceDescriptor(name);
return true;
} catch (NamespaceNotFoundException e) {
NamespaceDescriptor build = NamespaceDescriptor.create(name).build();
GetAdmin().createNamespace(build);
return true;
} catch (IOException e) {
e.printStackTrace();
}
return false;
}
// 创建表
public static boolean Exec_CreateTable(String name, String info) throws IOException {
TableName tableName = TableName.valueOf(name);
if(GetAdmin().tableExists(tableName) == false){
HTableDescriptor hTableDescriptor = new HTableDescriptor(tableName);
HColumnDescriptor hColumnDescriptor = new HColumnDescriptor(info);
hTableDescriptor.addFamily(hColumnDescriptor);
GetAdmin().createTable(hTableDescriptor);
return true;
}
return false;
}
// 添加数据
public static boolean Exec_AddData(String tableName, String info, String rowkey, String column, String value) throws IOException {
try{
Put put = new Put(Bytes.toBytes(rowkey));
put.addColumn(Bytes.toBytes(info), Bytes.toBytes(column), Bytes.toBytes(value));
GetConn().getTable(TableName.valueOf(tableName)).put(put);
return true;
}catch (Exception ex){
return false;
}
}
// 查询数据
public static Result Exec_GetDataByRowKey(String tablename, String rowkey) throws IOException {
Get get = new Get(Bytes.toBytes(rowkey));
Result result = GetConn().getTable(TableName.valueOf(tablename)).get(get);
return result;
}
// 删除数据(行键)(单元格)
public static boolean Exec_DelByRowKey(String tablename, String rowkey) throws IOException {
Result result = Exec_GetDataByRowKey(tablename, rowkey);
if(!result.isEmpty()){
Delete delete = new Delete(Bytes.toBytes(rowkey));
GetConn().getTable(TableName.valueOf(tablename)).delete(delete);
return true;
}else {
return false;
}
}
// 删除数据(单元格)
public static boolean Exec_DelByRowKey(String tablename, String rowkey, String info, String column) throws IOException {
Result result = Exec_GetDataByRowKey(tablename, rowkey);
if(!result.isEmpty()){
Delete delete = new Delete(Bytes.toBytes(rowkey));
delete.addColumn(Bytes.toBytes(info), Bytes.toBytes(column));
GetConn().getTable(TableName.valueOf(tablename)).delete(delete);
return true;
}else {
return false;
}
}
}
然后调用封装好的方法进行简单的学生信息增删改查
import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.CellUtil;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.util.Bytes;
import java.io.IOException;
import java.util.Scanner;
public class TestDemo {
static String tablname = "MySchool:stuinfo";
public static void main(String[] args) throws IOException {
HbaseUtil.Exec_CreateNameSpace("MySchool");
HbaseUtil.Exec_CreateTable("MySchool:stuinfo", "info");
while (true) {
System.out.println("欢迎访问学生管理信息系统");
System.out.println("1、注册学生信息");
System.out.println("2、查看学生信息");
System.out.println("3、删除学生信息");
System.out.println("4、修改学生信息");
Scanner scanner = new Scanner(System.in);
String choice = scanner.next();
switch (choice) {
case "1":
System.out.println("调用注册的方法");
AddStu();
break;
case "2":
System.out.println("调用查看的方法");
GetStu();
break;
case "3":
System.out.println("调用删除的方法");
DelStu();
break;
case "4":
System.out.println("调用修改的方法");
ChangeStu();
break;
}
}
}
public static void AddStu() throws IOException {
System.out.println("----------------------------------------------------------------------------");
System.out.println("这里是学生的注册功能界面");
System.out.println("请输入学号:");
Scanner scanner = new Scanner(System.in);
String stuid = scanner.next();
System.out.println("请输入姓名:");
String stuname= scanner.next();
System.out.println("请输入年龄:");
String stuage = scanner.next();
boolean r1 = HbaseUtil.Exec_AddData("MySchool:stuinfo", "info", stuid, "stuid", stuid);
boolean r2 = HbaseUtil.Exec_AddData("MySchool:stuinfo", "info", stuid, "name", stuname);
boolean r3 = HbaseUtil.Exec_AddData("MySchool:stuinfo", "info", stuid, "age", stuage);
if(r1&&r2&&r3){
System.out.println("注册成功!!");
}
}
public static void DelStu() throws IOException {
Scanner scanner = new Scanner(System.in);
System.out.println("----------------------------------------------------------------------------");
System.out.println("这里是学生的删除功能界面");
System.out.println("请选择:1、删除整个学生信息 2、删除单个列");
String chioce = scanner.next();
String stuid = "";
if(chioce.equals("1")){
System.out.println("请输入学号:");
stuid = scanner.next();
boolean r = HbaseUtil.Exec_DelByRowKey("MySchool:stuinfo", stuid);
if(r){
System.out.println("删除成功!!");
}
}else {
System.out.println("请输入学号:");
stuid = scanner.next();
System.out.println("请输入要删除的列(stuid, name, age):");
String delColumn = scanner.next();
boolean r = HbaseUtil.Exec_DelByRowKey("MySchool:stuinfo", stuid, "info", delColumn);
if(r){
System.out.println("删除成功!!");
}
}
}
public static void GetStu() throws IOException {
Scanner scanner = new Scanner(System.in);
System.out.println("----------------------------------------------------------------------------");
System.out.println("这里是学生的查看功能界面");
System.out.println("请输入学号:");
String stuid = scanner.next();
Result result = HbaseUtil.Exec_GetDataByRowKey("MySchool:stuinfo", stuid);
if(result.isEmpty()){
System.out.println("没有该学生");
}else {
for (Cell cell : result.rawCells()){
System.out.println(Bytes.toString(CellUtil.cloneQualifier(cell)) + ":" + Bytes.toString(CellUtil.cloneValue(cell)));
}
}
}
public static void ChangeStu() throws IOException {
System.out.println("----------------------------------------------------------------------------");
System.out.println("这里是学生信息的修改功能界面");
Scanner scanner = new Scanner(System.in);
System.out.println("请输入学号:");
String stuid = scanner.next();
Result result = HbaseUtil.Exec_GetDataByRowKey("MySchool:stuinfo", stuid);
if(result.isEmpty()){
System.out.println("没有该学生");
}else {
for (Cell cell : result.rawCells()){
System.out.println(Bytes.toString(CellUtil.cloneQualifier(cell)) + ":" + Bytes.toString(CellUtil.cloneValue(cell)));
}
}
System.out.println("请选择:1、修改名字 2、修改年龄");
String chioce = scanner.next();
if(chioce.equals("1")){
System.out.println("请输入姓名:");
String stuname = scanner.next();
boolean r = HbaseUtil.Exec_AddData("MySchool:stuinfo", "info", stuid, "name", stuname);
if(r){
System.out.println("修改成功!!");
}
}else {
System.out.println("请输入年龄:");
String stuage = scanner.next();
boolean r = HbaseUtil.Exec_AddData("MySchool:stuinfo", "info", stuid, "age", stuage);
if(r){
System.out.println("修改成功!!");
}
}
}
}
|