2013-12-22 4 views
0

HBase структуры таблицы:Как восстановить данные на основе времени из таблицы Hbase

Key, EventName, TimeStamp My Key является UUID, метка времени в длинном формате. Как я могу получить данные временного интервала данных (например, в час) из этой структуры таблицы.

Временной интервал фиксирован (то есть 0000 - 0100 HRS), (0100 - 0200 часов) .... (2300 - 0000) HRS.

Благодаря

ответ

0

1. Если вы не знаете, что период агрегации будет или, если вам не нужно в реальном времени вы можете просто сканировать таблицу и агрегировать его на стороне клиента (для маленьких маленьких наборов данных) , В случае, если ваш набор данных огромен (это должно быть, если вы используете HBase), вам нужно настроить снимок карты, чтобы использовать распараллеливание (или использовать HIVE).

http://hbase.apache.org/book/mapreduce.example.html


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

Введение счетчиков: http://my.safaribooksonline.com/book/databases/database-design/9781449314682/counters/id3238520

Сохранение данных:

Подумайте об этом виде ключей строк (позволяет бесконечное число различных EventTypes):

  • 8 байт ключ Sharding: несколько как substr (md5 (EventType), 0,8)
  • 4 байта POSIX временная метка для 00:00:00 дня (Integer.MAX_NUMBER - временная метка чтобы сначала написать новые строки).

На основании этого вы можете иметь 25 столбцов (по одному на каждый час + один на весь день) и дать всей семье TTL 3 месяца (для обрезки старых данных). Таким образом, вы можете просто увеличить счетчик для общего столбца + столбца, который хранит этот интервал.

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

запрашивающая данные:

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

Недостатки:

  • Предварительно агрегации с помощью счетчиков требуется 1 + 1 GET PUT, который является более дорогим, чем просто ставит.
  • Вы получите очень горячие регионы, если у вас есть много приращений для одного и того же типа событий. В этом случае будет намного лучше хранить в памяти счетчики (как атомные переменные) и сбрасывать их на HBase каждые X секунд.
Смежные вопросы