Hbase之预分区

一、预分区设置

        创建表时,只有一个分区region,当该分区达到一定的值时,会进行分区,此时分区会影响Hbase的性能。而且每一个region维护着startRow与endRow,如果加入的数据符合某个region维护的rowKey范围,则该数据交给这个region维护。因此可以添加预分区。

1.手动设定预分区

create 'group','info',SPLITS =>['10','20','30','40']

Hbase之预分区_第1张图片

2.生成16进制序列预分区

create 'group2','info',{NUMREGIONS => 15, SPLITALGO => 'HexStringSplit'}

Hbase之预分区_第2张图片

3.按照文件内容预分区

文件内容:spilt.txt
aaaa
bbbb
cccc
dddd
create 'group3', 'info',SPLITS_FILE => '/opt/module/hive/datas/spilt.txt'

Hbase之预分区_第3张图片 4.根据API分区

public class HBaseConnect {
    public static void main(String[] args) throws IOException {
        // 1.获取配置类
        Configuration conf = HBaseConfiguration.create();

        // 2.给配置类添加配置
        conf.set("hbase.zookeeper.quorum","hadoop102,hadoop103,hadoop104");

        // 3.获取连接
        Connection connection = ConnectionFactory.createConnection(conf);

        // 4.获取admin
        Admin admin = connection.getAdmin();

        // 5.获取descriptor的builder
        TableDescriptorBuilder builder = TableDescriptorBuilder.newBuilder(TableName.valueOf("bigdata", "group4"));
        // 6. 添加列族
        builder.setColumnFamily(ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes("info")).build());

        // 7.创建对应的切分
        byte[][] splits = new byte[3][];
        splits[0] = Bytes.toBytes("aaaa");
        splits[1] = Bytes.toBytes("bbbb");
        splits[2] = Bytes.toBytes("cccc");

        // 8.创建表
        admin.createTable(builder.build(),splits);
        // 9.关闭资源
        admin.close();
        connection.close();
    }
}

你可能感兴趣的:(Hbase,hbase,数据库,database)