получить доступ к таблице hbase из Java - PullRequest
0 голосов
/ 08 марта 2012

Я создал таблицу в hbase с 12 столбцами в каждой строке, и у каждого столбца есть 8 квалификаторов. Когда я пытаюсь прочитать полную строку, она возвращает правильное значение для 1: 1 в строке 1, но возвращает ноль для 1: 2 он читает все столбцы правильно от 2 до 10 .... помогите плз как решить эту проблему я использую этот код для чтения .... он внутри цикла, который запускается с 1 по 12 ..

train[0][i] = Double.parseDouble(Bytes.toString (r.getValue(Bytes.toBytes(Integer.toString(i)), Bytes.toBytes("1"))));
train[1][i] = Double.parseDouble (Bytes.toString (r.getValue(Bytes.toBytes(Integer.toString(i)), Bytes.toBytes("2"))));
train[2][i] = Double.parseDouble (Bytes.toString (r.getValue(Bytes.toBytes(Integer.toString(i)), Bytes.toBytes("3"))));
System.out.println("train" + i + ": " + train[2][i]);
train[3][i] = Double.parseDouble (Bytes.toString (r.getValue(Bytes.toBytes(Integer.toString(i)), Bytes.toBytes("4"))));
train[4][i] = Double.parseDouble (Bytes.toString (r.getValue(Bytes.toBytes(Integer.toString(i)), Bytes.toBytes("5"))));
train[5][i] = Double.parseDouble (Bytes.toString (r.getValue(Bytes.toBytes(Integer.toString(i)), Bytes.toBytes("6"))));


train[6][i] = Double.parseDouble (Bytes.toString (r.getValue(Bytes.toBytes(Integer.toString(i)), Bytes.toBytes("7"))));
train[7][i] = Double.parseDouble (Bytes.toString (r.getValue(Bytes.toBytes(Integer.toString(i)), Bytes.toBytes("8"))));

1 Ответ

0 голосов
/ 07 апреля 2012

Не вижу смысла помещать эти данные в несколько семейств столбцов. Кажется, вы можете поместить все это в один столбец и использовать схему адресации, такую ​​как «i_j», где i и j заменяются вашими индексами. Проблема с размещением элементов в нескольких семействах столбцов заключается в том, что каждое семейство столбцов получает свой собственный файл хранилища и, таким образом, использует гораздо больше ресурсов кластера. Также рассмотрите возможность использования минимального количества байтов для имени семейства столбцов.

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

byte[] column_family = Bytes.toBytes("a");
for (int i = 0; i < MAX_I; i++) {
  for (int j = 0; j < MAX_J; j++) {
    train[i][j] = Double.parseDouble(Bytes.toString(r.getValue(column_family, Bytes.toBytes(i+"_"+j);
    System.out.println("train["+i+"]["+j+"]: "+train[i][j]);
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...