Hbase——API操作
阿新 • • 發佈:2021-09-20
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(); } }