Hbase之预分区

Hbase之预分区,第1张

Hbase之预分区 一、预分区设置

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

1.手动设定预分区

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

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

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

3.按照文件内容预分区

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

 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();
    }
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5699937.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存