Взаимодействие с
«Apache Kylin»
посредством RestAPI
В настоящий момент, для решения задачи автоматизации видится перспективным использование Apache NiFi с возможностью запуска скриптов PowerShell через задачи ExecuteProcess / ExecuteStreamCommand. Разработка блока универсальных скриптов выходит за рамки данной статьи, используемые примеры параметризированы вручную, в коде скрипта.
В данной статье рассматривается RestAPI Apache Kylin на примере двух методов – получение информации о статусе джоба и запуск процессирования (BUILD) куба.
Метод 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-скрипт:
Процессирование OLAP-куба является обязательной регламентной задачей и должно выполняться после каждого обновления хранилища новыми данными.
Метод API, используемый для BUILD:
PUT http://localhost:7070/kylin/api/cubes/названиеКуба/build
Header-часть запроса должна содержать параметры:
Body-часть запроса должна содержать параметры в формате JSON:
В случае успешного вызова метода, в ответе вернётся информация о GUID запуска джоба, параметрах даты-времени («сегмент» куба), команды для серверной части, статус джоба (как правило PENDING на момент выполнения запроса). Отследить успешность выполнения операции можно также в web-интерфейсе Kylin – во вкладке «Monitoring» появится запись о выполнении операции над кубом.
PowerShell-скрипт:
При запуске процессирования куба, API возвращает JSON, содержащий информацию по текущему состоянию джоба. Зная GUID конкретного запуска, можно отследить его текущий статус на момент запроса (в частности, прогресс выполнения и отметку о выполнении/ошибке).
Метод API для получения текущего статуса джоба:
GET http://localhost:7070/kylin/api/jobs/{jobId}
Где {jobID} идентификатор работы джоба вида «e50b3a7c-18b4-4660-ac5d-c21213e55d78»
Ответ от сервера – в формате JSON.
PowerShell-скрипт: