• 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();
        }
    }
  • 相关阅读:
    Lodash 严重安全漏洞背后 你不得不知道的 JavaScript 知识
    SQL Server和C#中无法将小数字符串直接转换为整数类型
    Is default(CancellationToken) equivalent to CancellationToken.None?(转载)
    Stored Procedures: OUTPUT vs OUT?(转载)
    关于TransactionScope.Complete方法(链接)
    Do I need to dispose of Tasks?(链接)
    EF Core 3.0 Keyless Entity Types (链接)
    为什么C#接口中不能声明async异步函数(转载)
    How does SqlDataReader handle really large queries?(转载)
    ASP.NET Core MVC中的Filter如果不实现IFilterFactory接口,那么Filter默认情况下在ASP.NET Core生命周期内是单例的,会被重用
  • 原文地址:https://www.cnblogs.com/zyj3955/p/15313939.html
Copyright © 2020-2023  润新知