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();
        }
    }
  • 相关阅读:
    设计师必备:来自顶级设计师的建议清单
    Qt 控制线程的顺序执行(使用QWaitCondition,并且线程类的run函数里记得加exec(),使得线程常驻)
    Qt 模拟鼠标点击(QApplication::sendEvent(ui->pushbutton, &event0);)
    利用Qt开发跨平台APP(二)(iOS,使用Qt5.9,很详细,有截图)
    C# RESTful API
    NET架构
    一个宏实现
    初步了解 Netty
    使用Rabbit MQ消息队列
    NET CORE与Spring Boot
  • 原文地址:https://www.cnblogs.com/zyj3955/p/15313939.html
Copyright © 2011-2022 走看看