Hbase——API操作
1.判断表是否存在
public static boolean isTableExit(String tableName) throws IOException { // //获取配置文件信息 // //HBaseConfiguration configuration=new HBaseConfiguration(); // Configuration configuration=HBaseConfiguration.create(); // configuration.set("hbase.zookeeper.quorum","master,s1,s2"); // // //获取管理员对象 // //HBaseAdmin admin=new HBaseAdmin(configuration); // Connection connection=ConnectionFactory.createConnection(configuration); // Admin admin=connection.getAdmin(); //判断表是否存在 boolean exists=admin.tableExists(TableName.valueOf(tableName)); //关闭连接 // admin.close(); //返回结果 return exists; }
2.创建表
public static void createTable(String tableName,String... cfs) throws IOException { // 判断是否存在列族信息 if(cfs.length<=0){ System.out.println("请设置列族信息"); return; } //判断表是否存在 if(isTableExit(tableName)){ System.out.println(tableName+"表已存在"); return; } //创建表描述器 HTableDescriptor hTableDescriptor=new HTableDescriptor(TableName.valueOf(tableName)); //循环添加列族信息 for(String cf:cfs){ //创建列祖描述器 HColumnDescriptor hColumnDescriptor=new HColumnDescriptor(cf); // 添加具体列族信息 hTableDescriptor.addFamily(hColumnDescriptor); } //创建表 admin.createTable(hTableDescriptor); }
3.删除表
public static void dropTable(String tableName) throws IOException { //判断表是否存在 if (!isTableExit(tableName)){ System.out.println(tableName+"表不存在!"); return; } //先使表下线 admin.disableTable(TableName.valueOf(tableName)); // 删除表 admin.deleteTable(TableName.valueOf(tableName)); }
4.创建命名空间
public static void createNameSpace(String ns){ //创建命名空间描述器 NamespaceDescriptor namespaceDescriptor=NamespaceDescriptor.create(ns).build(); //创建命名空间 try { admin.createNamespace(namespaceDescriptor); } catch (NamespaceExistException e){ System.out.println(ns+"命名空间已存在"); } catch (IOException e) { e.printStackTrace(); } }
完整代码:
package test; 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.client.HBaseAdmin; import java.io.IOException; /* DDL: 1.判断表是否存在 2.创建表 3.删除表 DML: 5.插入数据 6.查数据(get,scan) 7.删除数据 */ public class TestAPI { private static Connection connection=null; private static Admin admin=null; static { try { //获取配置信息 Configuration configuration=HBaseConfiguration.create(); configuration.set("hbase.zookeeper.quorum","master,s1,s2"); //创建连接对象 connection=ConnectionFactory.createConnection(configuration); //创建admin对象 admin=connection.getAdmin(); } catch (IOException e) { e.printStackTrace(); } } //1.判断表是否存在 public static boolean isTableExit(String tableName) throws IOException { // //获取配置文件信息 // //HBaseConfiguration configuration=new HBaseConfiguration(); // Configuration configuration=HBaseConfiguration.create(); // configuration.set("hbase.zookeeper.quorum","master,s1,s2"); // // //获取管理员对象 // //HBaseAdmin admin=new HBaseAdmin(configuration); // Connection connection=ConnectionFactory.createConnection(configuration); // Admin admin=connection.getAdmin(); //判断表是否存在 boolean exists=admin.tableExists(TableName.valueOf(tableName)); //关闭连接 // admin.close(); //返回结果 return exists; } //2.创建表 public static void createTable(String tableName,String... cfs) throws IOException { // 判断是否存在列族信息 if(cfs.length<=0){ System.out.println("请设置列族信息"); return; } //判断表是否存在 if(isTableExit(tableName)){ System.out.println(tableName+"表已存在"); return; } //创建表描述器 HTableDescriptor hTableDescriptor=new HTableDescriptor(TableName.valueOf(tableName)); //循环添加列族信息 for(String cf:cfs){ //创建列祖描述器 HColumnDescriptor hColumnDescriptor=new HColumnDescriptor(cf); // 添加具体列族信息 hTableDescriptor.addFamily(hColumnDescriptor); } //创建表 admin.createTable(hTableDescriptor); } 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(); } } } //3.删除表 public static void dropTable(String tableName) throws IOException { //判断表是否存在 if (!isTableExit(tableName)){ System.out.println(tableName+"表不存在!"); return; } //先使表下线 admin.disableTable(TableName.valueOf(tableName)); // 删除表 admin.deleteTable(TableName.valueOf(tableName)); } //4.创建命名空间 public static void createNameSpace(String ns){ //创建命名空间描述器 NamespaceDescriptor namespaceDescriptor=NamespaceDescriptor.create(ns).build(); //创建命名空间 try { admin.createNamespace(namespaceDescriptor); } catch (NamespaceExistException e){ System.out.println(ns+"命名空间已存在"); } catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args) throws IOException { //1.测试表是否存在 // System.out.println(isTableExit("stu5")); // // //2.创建表测试 createTable("0919:stu5","info1","info2"); // // //检测表创建是否成功 // System.out.println(isTableExit("stu5")); // // //3.删除表测试 // dropTable("stu5"); // // //检测表删除是否成功 // System.out.println(isTableExit("stu5")); //4.创建命名空间 createNameSpace("0919"); //关闭资源 close(); } }