1. 程式人生 > 其它 >Hbase——API操作

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();
    }
}