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();
    }
}
原文地址:https://www.cnblogs.com/zyj3955/p/15313939.html