Не так давно наша компания начала осваивать новый стек технологий Apache. Спустя несколько успешных проектов мы хотим поделиться опытом разработки и некоторыми фичами.
Известный факт, что развитие компании сопровождается усовершенствованием используемых аналитических решений, где может меняться набор справочных полей, фактические данные для аналитики и многое другое. Существует ряд ограничений для изменений объектов в Kylin.
Apache Kylin имеет иерархию связей между объектами разных типов (проект, таблица, модель, куб, набор данных). Модель данных строится на наборе таблиц Hive и является источником для куба. Источниками для наборов данных в MDX for Kylin являются предварительно рассчитанные и агрегированные данных, кубы, разработанные и собранные в Apache Kylin. Схема зависимостей объектов представлена на рисунке:
Изменения в одном из объектов решения влекут за собой необходимость доработок связанных объектов в соответствии со стрелками на схеме. При этом важно отметить, что заменить таблицу фактов в модели и модель в кубе невозможно, а куб в наборе данных довольно проблематично (есть вероятность возникновения неустранимой ошибки).
Наша компания в проекте использует таблицы Hive типа external с типом хранения TEXTFILE. Нередко бывает, что структура данных меняется настолько кардинально, что проще становится создать новые таблицы, чем вносить изменения в существующие. В связи с этим, во избежание дополнительных доработок в Kylin, в качестве таблицы фактов и часто изменяемых измерений в моделях рациональнее использовать представления Hive. При одном и том же наборе столбцов в представлении данные могут тянуться из разных таблиц, быть отфильтрованы или уже агрегированы до необходимого уровня. Так как Kylin воспринимает представление на верхнем уровне как обычную таблицу, все изменения запросов в представлении при неизменности набора столбцов влекут за собой лишь обновление сегментов куба, предотвращая необходимость разработки нового аналитического решения.