2014-01-22 6 views
1

У меня есть таблица поиска HBase, где я храню некоторую информацию. У меня есть программа MapReduce, которая запускает некоторые KTR Pentaho, а в задаче MapReduce я записываю вывод. Из некоторых полей в выходных данных KTR я извлекаю некоторые ключи и использую их, я должен искать некоторые значения в HBase. Мой сценарий:Как эффективно искать таблицу HBase

1. The rowkey is of format <Table Code>-<CRC>, ex- DDVC-XXX 

For each output of the KTRs:  

2. If no result is found for a particular key(which I get from the Pentaho KTRs), 
    then increment a column value which has the rowkey of format 
    <Table Code>-last, ex: DDVC-last 
3. Take this incremented value and put it in the HBase table with the specific key. 

Итак, вот что я делаю один Приобретайте, один шаг и одну операцию Put, если я не мог найти значение для RowKey. Может кто-то дать мне некоторое предложение о том, как сделать это эффективно и не ударять HBase снова снова. Потому что, я вижу большую часть времени, требуемое заданием, для выполнения вышеуказанного алгоритма, который несколько раз ударяет HBase для одной строки.

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

ответ

0

Несмотря на то, что дизайн схемы может заслуживать некоторого внимания, проблема, о которой вы описали, не может быть дополнительно улучшена с точки зрения производительности. Get, Increment и Put являются отдельными операциями и требуют трех отдельных вызовов HBase.

+0

Да. Я с тобой согласен. Но есть ли способ сделать это в пакете, а затем выполнить Get, Incr и Put для каждого ключа? Или я могу сделать это с использованием сопроцессоров Observer, как в методе postGet? – achyut

+0

ах! Хороший вопрос - на самом деле я сейчас живу;) Уже поздно, я подумаю об этом. – javadba

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