24-28-Hbase-Api-DDL

6 篇文章 0 订阅

24-Hbase-Api-ddl:

创建项目,引入pom依赖

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.8.2</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.hbase/hbase-server -->

        <dependency>
            <groupId>org.apache.hbase</groupId>
            <artifactId>hbase-client</artifactId>
<!--            <version>2.4.2</version>-->
            <version>1.3.1</version>
        </dependency>

        <dependency>
            <groupId>org.apache.hbase</groupId>
            <artifactId>hbase-server</artifactId>
<!--            <version>2.4.2</version>-->
            <version>1.3.1</version>
        </dependency>
    </dependencies>

01.判断表是否存在,连接服务器

    public static void main(String[] args) throws IOException {
        //判断表是否存在
        boolean stu3 = isTableExit("stu3");
        System.out.println(stu3);
    }
    //判断表是否存在
    public static boolean isTableExit(String tableName) throws IOException {
        //获取配置文件信息
        HBaseConfiguration configuration = new HBaseConfiguration();
        configuration.set("hbase.zookeeper.quorum","192.168.1.102,192.168.1.103,192.168.1.104");
//        configuration.set("hbase.zookeeper.property.clientPort","2181"); //默认,可不写

        //获取管理员对象
        HBaseAdmin admin = new HBaseAdmin(configuration);
        //判断表是否存在
        boolean exists = admin.tableExists(tableName);
        //资源,关闭。
        admin.close();
        return exists;
    }

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2AbubtHi-1669555725869)(png/1619227333934.png)]

api另一种连接方式。

    private static Connection connection = null;
    private static Admin admin = null;
    static {
        try {
        //获取配置文件信息
        Configuration configuration = HBaseConfiguration.create();
        configuration.set("hbase.zookeeper.quorum","192.168.1.102,192.168.1.103,192.168.1.104");

        //创建连接对象
        connection = ConnectionFactory.createConnection(configuration);
        //获取管理员对象
        admin = connection.getAdmin();    //admin操作ddl,table操作dml
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    //判断表是否存在,新api
    public static boolean isTableExit02(String tableName) throws IOException {
        //判断表是否存在
        boolean exists = admin.tableExists(TableName.valueOf(tableName));
//        //资源,关闭。
//        admin.close();
        close();
        return exists;
    }
    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();
            }
        }
    }

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iaurpEQJ-1669555725870)(png/1619229229879.png)]

创建表
    public static void main(String[] args) throws IOException {
        //创建表测试
        System.out.println(isTableExit02("stu5"));
        createTable("stu5","info1","info2");
        System.out.println(isTableExit02("stu5"));
        close();
    }
        //创建表
    public static void createTable(String tableName,String... columns) throws IOException {
        //1、判断是否存在列族信息
        if(columns.length<=0){
            System.out.println("请设置列族信息");
            return;
        }
        //2、判断表是否存在
        if (isTableExit02(tableName)){
            System.out.println(tableName+"表已存在");
            return;
        }
        //创建表描述器
        HTableDescriptor hTableDescriptor = new HTableDescriptor(TableName.valueOf(tableName));
        //添加列族信息
        for (String colum : columns) {
            // 创建列族描述器
            HColumnDescriptor hColumnDescriptor = new HColumnDescriptor(colum);
//            hColumnDescriptor.setMaxVersions(10);//控制最大版本,根据列族修改
            //添加列族
            hTableDescriptor.addFamily(hColumnDescriptor);
        }

        //3、创建表
        admin.createTable(hTableDescriptor);
    }

删除表

       public static void main(String[] args) throws IOException {
        //删除表测试
        System.out.println(isTableExit02("stu5"));//true
        dropTable("stu5");
        System.out.println(isTableExit02("stu5"));//false
        close();

    }
   //删除表
    public static void dropTable(String tableName) throws IOException {
        //判断表是否存在
        if(!isTableExit02(tableName)){
            System.out.println(tableName+"表不存在");
            return;
        }
        //使表下线,disable
        admin.disableTable(TableName.valueOf(tableName));
        //删除表
        admin.deleteTable(TableName.valueOf(tableName));
    }

创建命名空间

    public static void main(String[] args) throws IOException {
        //创建命名空间
        createNameSpace("20210424");
        createTable("20210424:stu5","info1","info2");
        close();

    }
   //创建命名空间
    public static void createNameSpace(String nameSpace){
        //创建命名空间描述器
        NamespaceDescriptor namespaceDescriptor = NamespaceDescriptor.create(nameSpace).build();
        try {
            admin.createNamespace(namespaceDescriptor);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值