每日日报--Hbase的学习(5)

完成内容:

1.  Hbase的API操作2

 

package Test;

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 Test {
private static Connection connection = null;
private static Admin admin = null;

static {
try {
//1.获取配置文件信息
Configuration configuration = HBaseConfiguration.create();
configuration.set("hbase.zookeeper.quorum","centos01,centos02,centos03");

//2.创建连接对象
connection = ConnectionFactory.createConnection(configuration);

//3.创建Admin对象
admin = connection.getAdmin();
}
catch (IOException e){
e.printStackTrace();
}
}

//判断表是否存在
public static boolean isTableExist(String tableName) throws IOException {

/*
//1.获取配置文件信息
//HBaseConfiguration configuration = new HBaseConfiguration();
Configuration configuration = HBaseConfiguration.create();
configuration.set("hbase.zookeeper.quorum","centos01,centos02,centos03");

//2.获取管理员对象
//HBaseAdmin admin = new HBaseAdmin(configuration);
Connection connection = ConnectionFactory.createConnection(configuration);
Admin admin = connection.getAdmin();
*/

//3.判断表是否存在
//boolean exist = admin.tableExists(tableName);
boolean exist = admin.tableExists(TableName.valueOf(tableName));

/*
//4.关闭连接
admin.close();
*/

//5.返回结果
return exist;
}

//创建表
public static void CreateTable(String tableName,String... cfs) throws IOException {
//1.判断是否存在列族信息
if (cfs.length <= 0){
System.out.println("请设置列族信息");
return;
}

//2.判断表是否存在
if(isTableExist(tableName)) {
System.out.println("表已存在!");
return;
}

//3.创建表描述器
HTableDescriptor hTableDescriptor = new HTableDescriptor(tableName.valueOf(tableName));

//4.循环添加列族信息
for (String cf : cfs) {
//5.创建列族描述器
HColumnDescriptor hColumnDescriptor = new HColumnDescriptor(cf);


//6.添加具体的列族信息
hTableDescriptor.addFamily(hColumnDescriptor);
}

//7.创建表
admin.createTable(hTableDescriptor);
}

//创建命名空间
public static void CreateNameSpace(String ns){
//1.创建命名空间描述期
NamespaceDescriptor namespaceDescriptor = NamespaceDescriptor.create(ns).build();

//2.创建命名空间
try{
admin.createNamespace(namespaceDescriptor);
}
catch (NamespaceExistException e){
System.out.println(ns+"命名空间已存在");
}
catch (IOException e){
e.printStackTrace();
}
}

//插入数据
public static void PutData(String tableName,String rowKey,String cf,String cn,String value) throws IOException {
//1.获取表对象
Table table = connection.getTable(TableName.valueOf(tableName));

//2.创建PUT对象
Put put = new Put(Bytes.toBytes(rowKey));

//3.给PUT对象赋值
put.addColumn(Bytes.toBytes(cf),Bytes.toBytes(cn),Bytes.toBytes(value));

//4.插入数据
table.put(put);

//5.关闭表连接
table.close();
}

//删除表
public static void DeleteTable(String tableName) throws IOException {
//1.判断表是否存在
if(!isTableExist(tableName)){
System.out.println(tableName+"表不存在!");
return;
}

//2.表下线
admin.disableTable(TableName.valueOf(tableName));

//3.删除表
admin.deleteTable(TableName.valueOf(tableName));
}

//关闭进程
public static void close(){
if(admin != null) {
try{
admin.close();
}
catch (IOException e){
e.printStackTrace();
}
}

if (connection != null) {
try{
connection.close();
}
catch (IOException e) {
e.printStackTrace();
}
}
}

public static void main(String[] args) throws IOException {
//1.测试表是否存在
System.out.println(isTableExist("lalala"));

//2.创建表测试
//CreateTable("lalala","info1","info2");

//3.删除表测试
DeleteTable("lalala");

//4.测试表是否存在
System.out.println(isTableExist("lalala"));

//5.创建数据

//关闭资源
close();
}

}
遇到问题:
 无
目标:继续学习hadoop
posted @ 2021-10-04 19:16  1905-1雷宇  阅读(55)  评论(0编辑  收藏  举报