HBase--Table JavaAPI操作

HBase--Table JavaAPI操作

  • 导入依赖以及创建连接对象和admin对象
  • 创建表
    • 创建多个列簇的表
  • 修改表
  • 删除表
  • 查询所有表
  • 查询指定表中的所有列簇

	hbase版本:2.3.4	
	与hbase1.x版本有些差别
	学习记录

导入依赖以及创建连接对象和admin对象

参考这篇文章
HBase–Namespace JavaAPI操作

创建表

/**
     * 创建表
     * @throws IOException
     */
    @Test
    public void createTable1() throws IOException {
     
        //创建表描述建造者
        TableDescriptorBuilder tdb = TableDescriptorBuilder.newBuilder(TableName.valueOf("t1"));
        //创建列簇描述建造者
        ColumnFamilyDescriptorBuilder cfdb = ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes("info"));
        //设置最大版本号
        cfdb.setMaxVersions(3);
        //创建列簇描述
        ColumnFamilyDescriptor familyDescriptor = cfdb.build();
        //将列簇加入到表描述中
        tdb.setColumnFamily(familyDescriptor);
        //创建表描述对象
        TableDescriptor tableDescriptor = tdb.build();
        //创建表
        admin.createTable(tableDescriptor);
    }

注:需要先将列簇添加到表中再创建TableDescriptor对象

创建多个列簇的表

以列表的形式传入setColumnFamilies()方法即可

/**
     * 创建表,多列簇
     * @throws IOException
     */
    @Test
    public void createTable2() throws IOException {
     
        // --------------------添加多个列簇----------------------------
        //创建表描述建造者
        TableDescriptorBuilder tdb = TableDescriptorBuilder.newBuilder(TableName.valueOf("t2"));

        //将列簇添加到表描述中
        tdb.setColumnFamilies(Arrays.asList(
                ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes("f1")).build(),
                ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes("f2")).build(),
                ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes("f3")).build()
        ));
        //创建表描述对象
        TableDescriptor tableDescriptor = tdb.build();
        //创建表
        admin.createTable(tableDescriptor);

    }

修改表

对列簇进行增删

    /**
     * 修改表
     * 增加列簇,删除列簇
     * @throws IOException
     */
    @Test
    public void update() throws IOException {
     
        //创建列簇描述器
        ColumnFamilyDescriptor f4 = ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes("f4")).build();
        //增加列簇
        admin.addColumnFamily(TableName.valueOf("t2"), f4);
        
        //删除列簇
        admin.deleteColumnFamily(TableName.valueOf("t2"), Bytes.toBytes("f4"));
    }

删除表

删除表需要先将表禁用之后才能进行删除

/**
     * 删除表
     * @throws IOException
     */
    @Test
    public void delete() throws IOException {
     
        //禁用表
        admin.disableTable(TableName.valueOf("t1"));
        //删除表
        admin.deleteTable(TableName.valueOf("t1"));
    }

查询所有表

/**
     * 列出所有表
     * @throws IOException
     */
    @Test
    public void query() throws IOException {
     
    	//获取表名列表
        TableName[] tableNames = admin.listTableNames();
        //打印
        for (TableName tableName : tableNames) {
     
            System.out.println(tableName.toString());
        }
    }

查询指定表中的所有列簇

/**
     * 列出指定表中的所有列簇
     * @throws IOException
     */
    @Test
    public void queryCF() throws IOException {
     
        //获取表描述器
        TableDescriptor t2 = admin.getDescriptor(TableName.valueOf("t2"));
        //获取列簇数组
        ColumnFamilyDescriptor[] columnFamilies = t2.getColumnFamilies();
        for (ColumnFamilyDescriptor columnFamily : columnFamilies) {
     
            //列簇名
            System.out.println(columnFamily.getNameAsString());
        }
	}

你可能感兴趣的:(大数据笔记,java,hbase,大数据)