每日日报--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