Основы работы с Сlickhouse из Zeppelin

Введение

В статье я хочу рассмотреть инструмент 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 нужно перейти в раздел:

главная старица Zeppelin

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

кнопка для создания интерпретатора

После этого откроектся форма для создания интерпретатора, в которой нужно ввести:

  • имя (interpretator name): clickhouse
  • группу (interpretator group): jdbc

После этого станут дополнительные параметры для драйвера:

первоначальная настройка интерпретатора Zeppelin

Чтобы настроить соединение с сервером нужно запомнить поля для соединения с БД:

  • 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). Для этого необходимо перейти на главну страницу и выбрать пункт меню:

создание Zeppelin Notebook

Далее в поле вводим интересующий запрос. Для примера я взял запрос для вывода первых 100 записей:

select * from telemetry limit 100;

После чего нажимаем кнопку Run

Когда запрос отработает можно будет увидеть его результа:

получение данных

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

отображение данных в Zeppelin в виде графика

Ну и само собой есть экспорт в CSV и TSV.

Создание дашборда с динамической формой

Бывает надо создать такой дашборд который будет выводить данные с фильтрацией по определленому параметру. В Zeppelin это сделать довольно просто:

select * from telemetry where client=${client=0} limit 100;

Выражение ${client=0} отвечает за то, что появится поле для ввода сlient со значение по умолчанию 0. В дальнейшем нам нужно только пометь в нем значение и снова запустить запрос. Подробнее можно прочитать про эту возможность в документации.

динамическая форма Zeppelin

Так же есть возможность подключать код на AngularJS для работы с формами и делать свое представление данных на JS.

Заключение

В целом Zeppelin вызвал приятное впечатление тем, что не потребовалось много времени для его запуска и создания базового дашборда.

Я бы воспринимал Zeppelin как прокаченную алтернативу Jupyter Notebook (это web оболочка для работы с Python и анализа данных), причем, судя по документации, он умеет сохранять свои Notebook в таком формате.

Однако если вам нужен BI интсрумент Zeppelin будет не лучшим выбором и лучше посмотреть в сторону Cubes.

Ссылки

  1. Формы с AngularJS в Zeppelin
  2. Динамические формы в Zeppelin
 
comments powered by Disqus