Введение
В статье я хочу рассмотреть инструмент Zeppelin, который предназначен для визуального анализа данных.
Zeppelin - представляет из себя систему для получения данных из разных источников и их последующей визуализации. Я бы сравнил его с продвинутым клиентом для доступа к БД.
Также я опишу процесс настройки Zeppelin для работы с БД ClickHouse, которую в последнее время часто использую для аналитики.
Установка Zeppelin
Инструкцию по установке есть в официальной документации.
Если же вы хотите использовать Docker, то для этого нужно обратиться к документации.
Я у себя установил через Docker, используя следующую команду:
docker run -p 8080:8080 --rm \
-v $PWD/logs:/logs \
-v $PWD/notebook:/notebook \
-e ZEPPELIN_LOG_DIR='/logs' \
-e ZEPPELIN_NOTEBOOK_DIR='/notebook' \
-e ZEPPELIN_IN_DOCKER=true \
--name zeppelin apache/zeppelin-server:0.9.0
После чего сервис станет доступен по http://localhost:8080
.
Настройка интерпретатора для Clickhouse
Для работы с источниками данных в Zeppelin используются так называемые интерпретаторы, которые служат для определения языка запросов для обработки и работают на основе jar драйверов.
Для того чтобы создать интерпретатор для Clickhouse нужно перейти в раздел:

Затем нажать кнопку Create
:

После этого откроектся форма для создания интерпретатора, в которой нужно ввести:
- имя (interpretator name):
clickhouse
- группу (interpretator group):
jdbc
После этого станут дополнительные параметры для драйвера:

Чтобы настроить соединение с сервером нужно запомнить поля для соединения с БД:
- default.url (адрес сервера)
- default.user (пользователь для подклчения)
- default.password (пароль)
так же необходимо указать какой драйвер будет использоваться (default.driver). Чтобы это узнать необходимо найти jdbc драйвер для Clickhouse.
Из описания видно, что класс драйвера называется ru.yandex.clickhouse.ClickHouseDriver
, вот это значение и идет в default.driver.
Теперь осталось подключить этот драйвер в разделе Dependencies
. Это можно сделать 2-мя способами:
- указать путь до локального файла с драйвером
- использовать Maven в формате groupId:artifactId:version, чтобы Zeppelin сам выкачал зависимость.
Я использовал второй вариант и взял описание из документации к драйверу: ru.yandex.clickhouse:clickhouse-jdbc:0.2.4
Теперь сохраняем интерпретатор и он готов к использованию.
Создание дашборда
Чтобы проверить работу интерпретатора нужно создать новый дашборд (в терминах Zeppelin это Notebook). Для этого необходимо перейти на главну страницу и выбрать пункт меню:

Далее в поле вводим интересующий запрос. Для примера я взял запрос для вывода первых 100 записей:
select * from telemetry limit 100;
После чего нажимаем кнопку Run
Когда запрос отработает можно будет увидеть его результа:

Также можно этот запрос сразу же посмотреть в форме графика для лучшей визуализации:

Ну и само собой есть экспорт в CSV и TSV.
Создание дашборда с динамической формой
Бывает надо создать такой дашборд который будет выводить данные с фильтрацией по определленому параметру. В Zeppelin это сделать довольно просто:
select * from telemetry where client=${client=0} limit 100;
Выражение ${client=0}
отвечает за то, что появится поле для ввода сlient
со значение по умолчанию 0. В дальнейшем нам нужно только пометь в нем значение и снова запустить запрос. Подробнее можно прочитать про эту возможность в документации.

Так же есть возможность подключать код на AngularJS для работы с формами и делать свое представление данных на JS.
Заключение
В целом Zeppelin вызвал приятное впечатление тем, что не потребовалось много времени для его запуска и создания базового дашборда.
Я бы воспринимал Zeppelin как прокаченную алтернативу Jupyter Notebook (это web оболочка для работы с Python и анализа данных), причем, судя по документации, он умеет сохранять свои Notebook в таком формате.
Однако если вам нужен BI интсрумент Zeppelin будет не лучшим выбором и лучше посмотреть в сторону Cubes.