Сканирование и выборка столбцов HBase - PullRequest
2 голосов
/ 25 января 2011

Допустим, я создал таблицу

rowkey (attrId + attr_value) // составной ключ

колонка => документ: документ1, документ: документ2, ...

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

спасибо.

Ответы [ 3 ]

3 голосов
/ 31 мая 2012

Вы можете обойти гигантские выборки строк с помощью комбинации сканов и фильтров столбцов:

Scan s = ...;
s.setStartRow("some-row-key");
s.setStopRow("some-row-key");
Filter f = new ColumnRangeFilter(Bytes.toBytes("doc0000"), true,
                                 Bytes.toBytes("doc0100"), false);
s.setFilter(f);

Источник: http://hadoop -hbase.blogspot.com / 2012/01 / hbase-intra-рядный scanning.html

3 голосов
/ 26 января 2011

Сканирует выборочные строки.Вы можете квалифицировать сканирование так, чтобы оно выбирало только определенные классификаторы или семейства, но тогда это все, что будет возвращено из сканирования (и вы можете фильтровать только данные, включенные в сканирование).

Если у вас есть потенциально миллионы столбцов в одной строке, это может быть проблемой: это означает, что возврат этой строки может быть очень большой передачей по сети.Если размер строки превышает размер региона, это также может привести к ошибкам OOM на серверах региона, и у вас будет неэффективное хранилище (одна строка на регион).

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

2 голосов
/ 05 июня 2012

Вы также можете ограничить количество столбцов в строке, возвращаемой за раз, с помощью Scan.setBatch .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...