блог о bi, №1 в рунете

Взаимодействие с

«Apache Kylin»

посредством RestAPI

Глоссарий
Использование Apache Kylin™ в качестве компонента комплексного решения задач бизнес-аналитики требует возможности оперативно получать информацию о текущем статусе OLAP-куба, регламентных заданий, а также реализовать проведение регламентных обновлений ETL-инструментом. Для решения этих задач наиболее удобным инструментом представляется использование средств API.

В настоящий момент, для решения задачи автоматизации видится перспективным использование Apache NiFi с возможностью запуска скриптов PowerShell через задачи ExecuteProcess / ExecuteStreamCommand. Разработка блока универсальных скриптов выходит за рамки данной статьи, используемые примеры параметризированы вручную, в коде скрипта.


В данной статье рассматривается RestAPI Apache Kylin на примере двух методов – получение информации о статусе джоба и запуск процессирования (BUILD) куба.

Используемый стек
Apache Kylin на удалённом сервере с развёрнутым кубом «ABC»
Windows PowerShell + Visual Studio Code (отладка)
Postman
Apache NiFi (ETL)
Аутентификация

Метод API, используемый для аутентификации:


POST http://localhost:7070/kylin/api/user/authentication


Данные для аутентификации пользователя в API передаются в header-части запроса в открытом виде (кодирование в base64) и представляют собой код конкатенированной строки вида:


Authorization: Basic base64(login:password),


где base64() – закодированная в base64 строка.

Образец header-части запроса для аутентификации пользователя:


Authorization:Basic YWRtXXXXXXXXXXXXXXXZA==

Content-Type:application/json


Необходимость отдельного запроса аутентификации на текущий момент не установлена.

Вызов метода из среды Postman


PowerShell-скрипт:

Процессирование (BUILD) куба

Процессирование OLAP-куба является обязательной регламентной задачей и должно выполняться после каждого обновления хранилища новыми данными.

Метод API, используемый для BUILD:


PUT http://localhost:7070/kylin/api/cubes/названиеКуба/build


Header-часть запроса должна содержать параметры:

Authorization (в Postman заполняется автоматически из соответствующей вкладки)
Content-type: application/json
Прочие перечисленные параметры header не обязательны.

Body-часть запроса должна содержать параметры в формате JSON:

startTime (в формате ГГГГММДДЧЧММСС) – метка начальной даты-времени для обработки
endTime (в формате ГГГГММДДЧЧММСС) – метка конечной даты-времени для обработки
buildType (поддерживаемые - ‘BUILD’, ‘MERGE’, ‘REFRESH’) - тип обработки куба

В случае успешного вызова метода, в ответе вернётся информация о GUID запуска джоба, параметрах даты-времени («сегмент» куба), команды для серверной части, статус джоба (как правило PENDING на момент выполнения запроса). Отследить успешность выполнения операции можно также в web-интерфейсе Kylin – во вкладке «Monitoring» появится запись о выполнении операции над кубом.


PowerShell-скрипт:

Процессирование (BUILD) куба

При запуске процессирования куба, API возвращает JSON, содержащий информацию по текущему состоянию джоба. Зная GUID конкретного запуска, можно отследить его текущий статус на момент запроса (в частности, прогресс выполнения и отметку о выполнении/ошибке).

Метод API для получения текущего статуса джоба:


GET http://localhost:7070/kylin/api/jobs/{jobId}


Где {jobID} идентификатор работы джоба вида «e50b3a7c-18b4-4660-ac5d-c21213e55d78»

Ответ от сервера – в формате JSON.

PowerShell-скрипт:

Источники и справочные данные