База данных: данные не разбиваются на регионы в соответствии с ключевыми правилами именования - PullRequest
0 голосов
/ 31 мая 2018

Я реализую Java-программу, которая читает файлы паркета и загружает данные в таблицу HBase.Таблица разбита на 5 названных регионов ('a', 'f', 'k', 'p', 'u').и ключи строк будут иметь следующий формат: a-xxxxxx, f-xxxxxx ... где xxxxxx - случайная строка из 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.HBase output of list_regions command

Любая помощь будет оценена!Спасибо всем!

1 Ответ

0 голосов
/ 12 июня 2018

Я решил проблему: проблема была вызвана определением разделения областей, решение заменяет символы на строки следующим образом: byte [] [] splits = new byte [] [] {Bytes.toBytes ("a")), Bytes.toBytes ("f"), Bytes.toBytes ("k"), Bytes.toBytes ("p"), Bytes.toBytes ("u")};

...