hbase:数据不会按照键命名规则分割成区域

eqzww0vc  于 2021-06-09  发布在  Hbase
关注(0)|答案(1)|浏览(393)

我正在实现一个java程序,它读取Parquet文件并将数据加载到hbase表中。该表分为5个区域,分别命名为('a'、'f'、'k'、'p'、'u')。行键的格式如下:a-,f-。。。其中是一个随机的6个字符的字符串。然而,当我列出表区域时,我发现所有数据都只存储在一个区域中,尽管rowkeys前缀不同。
下面是我创建表及其区域的代码部分:

HTableDescriptor htable = new HTableDescriptor(tabname);
    htable.addFamily(new HColumnDescriptor(COL_FAMILY));
    if (hbaseAdmin.tableExists(tabname)) {
        hbaseAdmin.disableTable(tabname);
        hbaseAdmin.deleteTable(tabname);
    }
    byte[][] splits = new byte[][] {
            Bytes.toBytes('a'),
            Bytes.toBytes('f'),
            Bytes.toBytes('k'),
            Bytes.toBytes('p'),
            Bytes.toBytes('u')
    };
    hbaseAdmin.createTable(htable, splits);

但是在插入一些数据之后,当我列出表区域时,我从hbase shell得到以下输出。

任何帮助都将不胜感激!谢谢大家!

1l5u6lss

1l5u6lss1#

我解决了这个问题:这个问题是由区域分割定义引起的,解决方案是用如下字符串替换字符:byte[][]splits=new byte[][]{bytes.tobytes(“a”),bytes.tobytes(“f”),bytes.tobytes(“k”),bytes.tobytes(“p”),bytes.tobytes(“u”)};

相关问题