Многомерный анализ в Hive / Impala

У меня есть денормализованная таблица продаж, которая выглядит так:

SalesKey, SalesOfParts, SalesOfEquipments, CostOfSales в качестве некоторых числовых показателей Отрасль, Страна, Штат, Площадь продаж, Идентификатор оборудования, Идентификатор клиента, год продажи, месяц продажи и некоторые другие аналогичные параметры. (Всего 12 измерений)

Мне нужно поддерживать агрегационные запросы по продажам, такие как общее количество продаж за год, месяц ... их общая стоимость и т. Д. Также эти агрегаты необходимо отфильтровать, то есть что-то вроде общих продаж в 2013 году, 04, принадлежащих производству промышленность клиента XYZ.

У меня есть эти таблицы размеров и факты в hive / impala.

Не думаю, что смогу сделать куб во всех измерениях. Я прочитал статью, чтобы узнать, как выполнять OLAP в нескольких измерениях: http://www.vldb.org/conf/2004/RS14P1.PDF

Что в основном предлагает материализовать кубы над небольшими фрагментами и выполнять какие-то вычисления во время выполнения, когда запрос охватывает несколько кубов.

Я не уверен, как реализовать эту модель в Hive / Impala. Любые указатели / предложения будут потрясающими.

РЕДАКТИРОВАТЬ: у меня около 10 миллионов строк в таблице продаж, и размеры не сопоставимы со 100, но составляют около 12 (может доходить до 15), но каждая из них имеет хорошую мощность.


person Dhruv Kapur    schedule 31.07.2014    source источник
comment
Возможно, стоит упомянуть размер ваших данных и необходимое время ответа на ваши запросы. В упомянутой статье рассматривается сценарий с более чем 100 измерениями и довольно небольшим количеством кортежей 10e6. Применимо ли это к вашему варианту использования?   -  person Marc Polizzi    schedule 01.08.2014
comment
Добавлен размер данных ... У меня пока нет требований к ответу.   -  person Dhruv Kapur    schedule 01.08.2014


Ответы (1)


Я бы строил кубы с помощью стороннего ПО. Например, icCube - это сервер OLAP в памяти, который может без проблем обрабатывать 10 миллионов строк по 12 измерениям. . Тогда время отклика будет меньше секунды по всем параметрам. Выход из Hive 10 миллионов строк не кажется проблемой (для этой цели вы можете использовать драйвер JDBC). icCube специально разработан для работы с высокой разреженностью.

person Marc Polizzi    schedule 02.08.2014
comment
В порядке. Спасибо. Я посмотрю в icCube. Меня интересует, как происходит вычисление этого куба? Разве 12 столбцов с пятикратной мощностью не слишком велики для вычисления и хранения? Еще раз спасибо. - person Dhruv Kapur; 02.08.2014
comment
Все агрегаты происходят «на лету»; icCube хранит в ОЗУ 10 миллионов строк. 12 габаритов это нормально. - person Marc Polizzi; 02.08.2014
comment
Если речь идет о хранении в памяти, думаю, у меня уже есть инструмент для этого. Импала тоже это сделает. Просто поясняю, не происходит никакой кубификации? - person Dhruv Kapur; 02.08.2014
comment
Да, icCube предназначен для создания кубов OLAP; агрегирование выполняется «на лету» во время обработки запросов с временем отклика менее секунды. icCube поддерживает стандартный язык MDX. - person Marc Polizzi; 03.08.2014