zoukankan      html  css  js  c++  java
  • 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();
        }
    }
  • 相关阅读:
    Day18-lvs
    mysql日志
    【杂文】我们都有光明的前途(回忆录)
    【杂文】银色的 NOI2020(退役记)
    【杂文】SCOI2020 游记
    【学习笔记】字符串—广义后缀自动机
    【学习笔记】数论、数学—常见定理、结论、性质汇总
    【杂文】随心一记
    【杂文】CSP2019 蒟蒻AFO(假)记
    【模板整合计划】目录
  • 原文地址:https://www.cnblogs.com/zyj3955/p/15313939.html
Copyright © 2011-2022 走看看