2009-09-14 6 views
25

В прошлом я использовал WebAnalytics, используя кубы OLAP, работающие на MySQL. Теперь куб OLAP, как я использовал, это просто большая таблица (хорошо, она была немного более умна, чем та,), где каждая строка представляет собой в основном измерительный или или совокупный набор измерений. Каждое измерение имеет кучу размеров (например, pagename, useragent, ip и т. Д.) И множество значений (например, количество просмотров страниц, количество посетителей и т. Д.).Может ли OLAP быть выполнен в BigTable?

Запросы, которые вы запускаете на столе, как это, как правило, в форме (мета-SQL):

SELECT SUM(hits), SUM(bytes), 
FROM MyCube 
WHERE date='20090914' and pagename='Homepage' and browser!='googlebot' 
GROUP BY hour 

Таким образом, вы получите итоговые суммы за каждый час выбранного дня с указанными фильтрами. Одна из проблем заключалась в том, что эти кубы обычно означали полное сканирование таблицы (по разным причинам), и это означало практическое ограничение размера (в МиВ), которое вы могли бы сделать.

В настоящее время я изучаю входы и выходы Hadoop и подобных.

Выполнение вышеуказанного запроса как mapreduce на BigTable выглядит достаточно просто: Просто сделайте «час» ключом, фильтруйте на карте и уменьшайте, суммируя значения.

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

Если нет; какова соответствующая технология, чтобы сделать что-то подобное в области BigTable/Hadoop/HBase/Hive и подобных?

ответ

9

Это даже вроде сделано (вроде).

агрегация/Резюме двигатель LastFM в: http://github.com/zohmg/zohmg

Поиск Google объявился код проекта Google «mroll», но он не имеет ничего, кроме контактной информации (без кода, ничего). Тем не менее, возможно, захотите обратиться к этому парню и посмотреть, что случилось. http://code.google.com/p/mroll/

+1

Благодарность за zohmg sugegstion. Согласно их веб-сайту: «Основная идея состоит в том, чтобы предварительно вычислить агрегаты и сохранить их с точки зрения эффективности». Моя идея - начать с набора данных и совокупности на основе потребностей пользователей в данный момент. –

+0

Вы хотите предварительно сгруппировать, чтобы для каждой уникальной комбинации измерений у вас было не более одной строки; тогда агрегация времени выполнения представляет собой вопрос об откачивании соответствующего поперечного сечения куба. Zohmg может указать вам, как это сделать. Я знаю, по крайней мере, одну рекламную сеть, которая использует HyperTable или HBase для работы в режиме реального времени для своих клиентов, поэтому это выполнимо. – SquareCog

+3

Zohmg теперь отказывается. – rjha94

4

Мой ответ относится к HBase, но в равной степени относится и к BigTable.

Urban Airship с открытым исходным кодом datacube, который, как я думаю, близок к тому, что вы хотите. См. Их presentation.

Adobe также имеет несколько презентаций (here и here) о том, как они делают «низкоуровневую OLAP» с HBase.

3

Если вы ищете подход к сканированию стола, считаете ли вы, что Google BigQuery? BigQuery делает автоматическое масштабирование на обратной стороне, что дает интерактивный ответ. Хорошая сессия Иордании Тигани из мероприятия 2012 года ввода-вывода Google объясняет некоторые из внутренних дел.

http://www.youtube.com/watch?v=QI8623HlYd4

Это не MapReduce, но она ориентирована на стол высокоскоростного сканирования, как то, что вы описали.

+0

Хотя эта ссылка может ответить на вопрос, лучше включить основные части ответа здесь и предоставить ссылку для справки. Ответные ссылки могут стать недействительными, если связанная страница изменится. –

4

Нам удалось создать низкоуровневую OLAP в HBase, предварительно подготовив SQL-запрос и сопоставив его с соответствующими квалификаторами Hbase. Для более подробной информации посетите сайт ниже.

http://soumyajitswain.blogspot.in/2012/10/hbase-low-latency-olap.html