2010-12-29 4 views
2

У меня есть таблица HBASE около 150 тыс. Строк, каждая из которых содержит 3700 столбцов.Возвращающиеся агрегирования из данных HBASE

нужно выбрать несколько строк одновременно, и агрегировать результаты обратно, что-то вроде:

ряда [1] [column1] + строка [2] [column1] ... + строка [п] [столбец1]
строки [1] [столбец2] + строка [2] [столбец2] ... + строка [п] [столбец2]
...
строки [1] [columnn] + грести [2] [columnn] ... + row [n] [columnn]

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

Есть ли способ сканирования в распределенной форме (опция или создание нескольких сканеров для данных каждого региона) [Это может быть банда червей сама по себе]) или это что-то, что необходимо сделать в создать карту/уменьшить работу. Если это задание M/R, будет ли оно «быстрым» достаточно для запросов в реальном времени? Если нет, есть ли хорошие альтернативы выполнению этих типов агрегаций в реальном времени с базой данных типа NOSQL?

ответ

2

Что бы я делал в таких случаях, есть другая таблица, где у меня будут сводные сводки. То есть Когда строка [m] вставлена ​​в таблицу 1 в таблице 2 (столбец 1) (которая является строковым ключом таблицы 2), я бы сохранил ее суммирование или другие результаты агрегирования, будь то среднее, стандартное отклонение, max, min и т. д.

Другим подходом было бы проиндексировать их в инструмент поиска, такой как Lucene, Solr, Elastic Search и т. д. и выполнять там агрегированные поисковые запросы. Вот несколько примеров в Solr.

И, наконец, сканирование, охватывающее несколько областей или заданий M/R, не предназначено для запросов в реальном времени (если только кластеры, сконструированные таким образом, то есть не соответствуют требованиям к данным).

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

Смежные вопросы