Есть ли способ ограничить количество столбцов в Hbase - PullRequest
0 голосов
/ 16 марта 2011

Есть ли способ ограничить количество столбцов в определенной строке в Hbase?Я видел методы для ограничения строк.Интересно, есть ли способы ограничить значения семейства столбцов

Например,

row columnfamily (page) value
1 page: 1 1
1 page:2 2
1 страница: 3 3

Мне нужно получить значения строки 1 для семейств столбцов: страница 1 и страница: 2
Возможно ли это?

Ответы [ 2 ]

0 голосов
/ 16 марта 2011

Существует множество способов решения этой проблемы.По сути, вы хотите, чтобы серверный фильтр ограничивал ваши возвращаемые данные при получении / сканировании.Обычно это делается с сопроцессором, но он все еще находится в стадии разработки, поэтому вы действительно хотите применить фильтр к вашему запросу.

Примеры фильтров: http://svn.apache.org/repos/asf/hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/filter/

Самый простой пример - фильтр префиксов (хотя, похоже, вам нужен какой-то фильтр диапазона).Просто чтобы дать вам общее представление о том, как это будет работать, вот как вы применяете PrefixFilter к Get:

HTable myTable; // predefined
Scan scan; // predefined
scan.setFilter(new ColumnPrefixFilter(Bytes.toBytes("myprefix")));
return myTable.getScanner(scan);
0 голосов
/ 16 марта 2011

Это возможно.

При сканировании использовать http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/client/Scan.html#addColumn(byte[], байт [])

При получении использовать http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/client/Get.html#addColumn(byte[], байт [])

Если ключ столбца является предсказуемым, например, ключ является индексом, то на основе определенного значения ключи могут быть добавлены путем итерации.Кроме того, вы также можете использовать фильтры, если условие может быть случайным и сложным, например> 1 и <3, введите (3, 10, 11) и т. Д. Для фильтра используйте <a href="http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/client/Scan.html#setFilter%28org.apache.hadoop.hbase.filter.Filter%29" rel="nofollow"> this .Есть множество предварительно реализованных фильтров .Возможно, вас заинтересует фильтр квалификатора .

Надеюсь, это поможет.

...