Использование HBase для аналитики - PullRequest
2 голосов
/ 17 ноября 2011

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

Я полностью потерян на первом этапе ...

Мне нужно отслеживать различные действия пользователей и иметь возможность агрегировать их по некоторым аспектам (дата, страна, из которой они происходят, продукт, с которым они выполнили действие, и т. Д ...)

Способ храненияВ настоящее время у меня есть таблица с составным PK со всеми этими аспектами (страна, дата, продукт, ...), а остальные поля являются счетчиками для действий.Когда действие выполняется, я вставляю его в таблицу, увеличивая столбец действия на единицу (ON DUPLICATE KEY UPDATE ...).

*date      | *country | *product | visited | liked | put_to_basket | purchased
2011-11-11 | US       | 123      | 2       | 1     | 0             | 0
2011-11-11 | GB       | 123      | 23      | 10    | 5             | 4
2011-11-12 | GB       | 555      | 54      | 0     | 10            | 2

У меня такое ощущение, что это полностью противоречит HBase,и также не очень масштабируется (с растущим числом, если вставка ключей становится дорогой) и не очень гибок.

Как эффективно отслеживать действия пользователя с его атрибутами в HBase?Как должны выглядеть таблицы?Откуда на снимке MapReduce?

Спасибо за все предложения!

Ответы [ 2 ]

1 голос
/ 20 ноября 2011

Это можно сделать следующим образом:

Иметь уникальный идентификатор строки в Hbase следующим образом:

rowid = date + country + product ---> добавить их в одну сущность иимейте это в качестве ключа.

Тогда счетчики как столбцы.Поэтому, когда вы получаете событие, например,

if(event == liked){
increment the liked column of the hbase by 1 for the corresponding key combination.
}

и т. Д. Для других случаев.

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

1 голос
/ 17 ноября 2011

«HBASE: полное руководство» Ларса Джорджа объясняет дизайн, очень похожий на то, чего вы хотите достичь во вводной главе

...