2013-08-12 4 views
0

У меня есть следующий случай использования hbase: Одна таблица Hbase, с ключом строки (построенная с использованием комбинации хешей md5) и двух семейств столбцов. Логически таблица хранит предложения. Стол содержит сотни миллионов записей.Hbase update use case

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

Так что мой вопрос связан с этим - как я должен убедиться, что одни и те же сегменты не будут экспортироваться снова?

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

Есть ли лучший подход для этого?

ответ

0

Кто передает ключ строки для вас? Можете ли вы убедиться, что он отправляет уникальные клавиши строк?

Если вам не нужны данные после экспорта. почему бы вообще не удалить это предложение из таблицы hbase?

Если ваш ответ «нет» для обоих вышеперечисленных вопросов, тогда нет способа сохранить флаг в вашей таблице.

Спасибо.

+0

В итоге я использовал фильтры, поскольку они, кажется, работают достаточно быстро для моего использования. Моя единственная проблема заключается в том, что, допустим, у меня есть несколько строк для обновления флага. Что делать, если это обновление не выполняется (скажем, большое количество строк необходимо обновить), а некоторые другие пользователи хотят экспортировать данные для тех же условий? Будет ли он видеть все обновления? Я читал [Hbase Acid Semantics] (http://hbase.apache.org/acid-semantics.html), где вижу, что Hbase читается: «Сканирование _must_ отражает все мутации, совершенные до построения сканера» , Означает ли это, что я уверен в своем предположении? –