Лучший способ хранить иерархические данные в hbase - PullRequest
6 голосов
/ 18 ноября 2011

У меня есть иерархический XML-файл, полученный от клиента, мне нужно сохранить его в базе данных Hbase, так как я новичок в Hbase, я не могу понять, как к нему обратиться, можете ли вы подсказать мне, как мне поступить для этой иерархической хранение данных в Hbase.

Заранее спасибо

1 Ответ

8 голосов
/ 20 ноября 2011

Hbase хранит данные в колоночном формате. Каждая запись должна иметь уникальный ключ. Подколонки могут быть созданы на лету, но не основные столбцы.

Например, рассмотрите этот xml.

<X1>
   <X2 name = "uniqueid">1</X2>
   <X3>
      <X4>value1</X4>
      <X5>value2</X5>
      <X6>
          <X7>value3</X7>
          <X8>value4</X8>
      </X6>
   </X3>
   <X7>value5</X7>
</X1>

В этом случае основным семейством столбцов будут X3 и X7. Идентификатор строки можно взять из X2. Вы можете создать запись Hbase, эквивалентную этой, используя java api, например,

Put p = new Put("/*put the unique row id */ ".getBytes() );

p.add("X3".getBytes(), "X4".getBytes(), value1.getBytes());

где первый аргумент - это семейство столбцов, а второй - квалификатор столбца (подколонка).

Вы также можете использовать конструктор с двумя аргументами, например,

p.add("X3:X6:X7".getBytes(),value3);

, затем table.put(p). Вот и все !!!

...