Hbase:数据未按照关键命名规则拆分为区域
Hbase: data are not splitted into regions following key naming rules
我正在实施一个 java 程序,该程序读取 parquet 文件并将数据加载到 HBase table。 table 被分成 5 个区域,分别命名为(‘a’、‘f’、‘k’、‘p’、‘u’)。行键将类似于以下格式:
a-xxxxxx, f-xxxxxx ... 其中 xxxxxx 是随机的 6 字符字符串。但是,当我列出 table 区域时,我发现尽管行键前缀多种多样,但所有数据都只存储在一个区域中。
这是我创建 table 及其区域的代码部分:
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);
但是在插入一些数据后,当我列出 table 区域时,我从 HBase shell 得到以下输出。
任何帮助将不胜感激!
谢谢大家!
我解决了这个问题:问题是由区域拆分定义引起的,解决方案是用字符串替换字符,如下所示: byte[][] splits = new byte[][] { Bytes.toBytes ("a"), Bytes.toBytes("f"), Bytes.toBytes("k"), Bytes.toBytes("p"), Bytes.toBytes("u") };
我正在实施一个 java 程序,该程序读取 parquet 文件并将数据加载到 HBase table。 table 被分成 5 个区域,分别命名为(‘a’、‘f’、‘k’、‘p’、‘u’)。行键将类似于以下格式: a-xxxxxx, f-xxxxxx ... 其中 xxxxxx 是随机的 6 字符字符串。但是,当我列出 table 区域时,我发现尽管行键前缀多种多样,但所有数据都只存储在一个区域中。
这是我创建 table 及其区域的代码部分:
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);
但是在插入一些数据后,当我列出 table 区域时,我从 HBase shell 得到以下输出。
任何帮助将不胜感激! 谢谢大家!
我解决了这个问题:问题是由区域拆分定义引起的,解决方案是用字符串替换字符,如下所示: byte[][] splits = new byte[][] { Bytes.toBytes ("a"), Bytes.toBytes("f"), Bytes.toBytes("k"), Bytes.toBytes("p"), Bytes.toBytes("u") };