【问题标题】:Hbase: data are not splitted into regions following key naming rulesHbase:数据不按照键命名规则拆分为区域
【发布时间】:2018-05-31 10:35:20
【问题描述】:

我正在实现一个读取 parquet 文件并将数据加载到 HBase 表中的 java 程序。该表分为 5 个区域,分别命名为(‘a’、‘f’、‘k’、‘p’、‘u’)。并且行键将类似于以下格式: a-xxxxxx, f-xxxxxx ... 其中 xxxxxx 是一个随机的 6 个字符的字符串。然而,当我列出表格区域时,我发现所有数据都只存储在一个区域中,尽管行键前缀多种多样。

这是我创建表及其区域的代码部分:

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 获得以下输出。

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

【问题讨论】:

  • 我解决了这个问题:问题是由区域拆分定义引起的,解决方案是用字符串替换字符,如下所示: byte[][] splits = new byte[][] { Bytes. toBytes("a"), Bytes.toBytes("f"), Bytes.toBytes("k"), Bytes.toBytes("p"), Bytes.toBytes("u") };

标签: java hbase regions


【解决方案1】:

我解决了问题:问题是由区域拆分定义引起的,解决方案是用字符串替换字符,如下所示: byte[][] splits = new byte[][] { Bytes.toBytes("a" ), Bytes.toBytes("f"), Bytes.toBytes("k"), Bytes.toBytes("p"), Bytes.toBytes("u") };

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-18
    • 2020-04-24
    • 2013-09-21
    • 1970-01-01
    • 1970-01-01
    • 2011-02-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多