老师要测试什么的,所以我想练习一下,顺便记录在博客里,如有错误,敬请指正,谢谢!!!
idea连接hbase
首先确保你可以打开Hbase http://192.168.40.100:16010 查看所有表
//导入所需的类和包,包括HBase的相关类 import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.*; 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.protobuf.generated.HBaseProtos; import javax.xml.stream.events.Namespace; import java.io.IOException; import static org.checkerframework.checker.units.UnitsTools.h; /** * @BelongsProject: hbase * @BelongsPackage: PACKAGE_NAME * @Author: yanyanyan * @CreateTime: 2023-09-13 20:56 * @Description: TODO * @Version: 1.0 */ //创建一个名为”TestAPI“的java类 public class TestAPI { // 声明一个静态的Connection对象和一个静态的Admin对象,并将其初始化未null private static Connection connection = null; private static Admin admin = null; //在静态块中,创建一个HBase配置对象(Configuration) static { try { Configuration configuration = HBaseConfiguration.create(); // 配置HBase连接的ZooKeeper主机信息,使用了”hadoop100,hadoop101,hadoop102“作为ZooKeeper的主机名 configuration.set("hbase.zookeeper.quorum", "hadoop100,hadoop101,hadoop102"); // 使用ConnectionFactory.createConnection(configuration)方法基于配置对象创建一个HBase连接(Connection) connection = ConnectionFactory.createConnection(configuration); // 使用connection.getAdmin()方法从连接中获取一个HBase管理客户端(Admin) admin = connection.getAdmin(); // 在异常处理块中打印异常的堆栈跟踪信息 } catch (IOException e) { e.printStackTrace(); } } //创建一个函数判断表是否存在,以此证明是否成功连接 public static boolean isTableExist(String tableName) throws IOException { boolean exists = admin.tableExists(TableName.valueOf(tableName)); return exists; } // 关闭HBase管理客户端(admin) public static void close() { if (admin != null) { try { admin.close(); } catch (IOException e) { e.printStackTrace(); } } } public static void main(String[] args) throws IOException { //测试表是否存在 System.out.println(isTableExist("stu")); //关闭资源 close(); } }
返回true,连接成功!
hbase创建表
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(tableName+"表已存在!"); return; } //3、创建表描述器 HTableDescriptor hTableDescriptor=new HTableDescriptor(TableName.valueOf(tableName)); //4、循环添加列族信息 for(String cf:cfs) { //创建列族描述器 HColumnDescriptor hColumnDescriptor = new HColumnDescriptor(cf); //添加具体的列族信息 hTableDescriptor.addFamily(hColumnDescriptor); } // 创建表 admin.createTable(hTableDescriptor); } //创建表测试语句
System.out.println(isTableExist("stu6"));
createTable("0408:stu5","info1","info2");
System.out.println(isTableExist("stu6"));
close();
可以在测试里面加入stu6,返回false之后再返回true以此证明创表成功!
hbase删除表
public static void dropTable(String tableName) throws IOException { //1、判断表是否存在 if (!isTableExist(tableName)) { System.out.println(tableName + "does not exist."); return; } //2、使表下线 admin.disableTable(TableName.valueOf(tableName)); //3、删除表 admin.deleteTable(TableName.valueOf(tableName)); } dropTable("stu6");
测试
结果正确
hbase创建命名空间
//4、创建命名空间 public static void createNameSpace(String ns) throws IOException { //1、创建命名空间描述器 /* 通过调用 NamespaceDescriptor.create(ns) 创建一个命名空间描述器 使用 .build() 方法构建描述器对象。 */ NamespaceDescriptor namespaceDescriptor = NamespaceDescriptor.create(ns).build(); //2、创建命名空间 try { admin.createNamespace(namespaceDescriptor); System.out.println(ns + "命名空间创建成功!"); } catch (NamespaceExistException e) { System.out.println(ns + "命名空间已存在!"); } catch (IOException e) { e.printStackTrace(); } System.out.println("111"); }
createNameSpace("0400");
我们在这个命名空间里创建一个stu00表
createTable("0400:stu00","info1","info2");
标签:admin,改查,idea,IOException,import,static,hbase,HBase From: https://www.cnblogs.com/gbrr/p/17703661.html