Apache Superset ClickHouse connection. Как создать подключение?

Подключение к ClickHouse из Apache Superset 3.1.1

Для того, чтобы для Apache Superset при развертывании образа через Docker Compose установить драйвер ClickHouse, необходимо всего лишь добавить файл requirements-local.txt в директорию docker (по умолчанию он отсутствует):

superset
│
└── docker
      ├── README.md
      ├── docker-bootstrap.sh
      ├── docker-ci.sh
      ├── docker-entrypoint-initdb.d
      │     └── examples-init.sh
      ├── docker-frontend.sh
      ├── docker-init.sh
      ├── frontend-mem-nag.sh
      ├── nginx
      │     └── nginx.conf
      ├── pythonpath_dev
      │     ├── superset_config.py
      │     └── superset_config_local.example
      ├── requirements-local.txt
      └── run-server.sh

Внутрь файла requirements-local.txt нужно вписать строку:

clickhouse-connect>=0.6.8

После того, как вы запустите команду развертывания контейнеров с помощью docker compose, драйверы из файла будут установлены на одном из этапов инсталляции.

Установка библиотек из файла requirements-local.txt осуществляется при выполнении скрипта /superset/docker/docker-bootstrap.sh:

А сам файл попадает через монтирование docker директории через docker compose файл /superset/docker-compose-non-dev.yml:

То есть, внесенные изменения в локальную директорию docker в проекте, будет доступна в контейнере /app/docker. Это внутренняя фишка docker compose.

Создание подключения к ClickHouse из Apache Superset

Для того, чтобы создать подключение к ClickHouse, необходимо зайти в меню Settings (справа сверху) и выбрать Database Connections:

Затем появится список всех созданных ранее подключений. Для создания нового подключения нажмите кнопку «+ Database»:

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

Далее вводим параметры подключения, проверяем и сохраняем наше новое подключение:

Как установить драйвер в Apache Superset в образ принудительно?

Если у вас образ развертывается отличным способом от docker compose, то либо вы можете добавить команду установки драйверов из файла requirements-local.txt, либо заранее установить драйвер в образ.

Для этого, также в директории docker нужно создать файл requirements-local.txt

clickhouse-connect>=0.6.8

Затем создать Dockerfile, например, назвать его Dockerfile_CH и внести туда код:

######################################################################
# Official Superset image
######################################################################
FROM apachesuperset.docker.scarf.sh/apache/superset:3.1.1 AS superset-official


######################################################################
# Install Drivers for Clickhouse
######################################################################
USER root

COPY ./docker/requirements-local.txt /app/requirements/

# Cache everything for dev purposes...
RUN cd /app \
    && pip install --no-cache -r requirements/requirements-local.txt

USER superset

Supersert Image Building с кастомным Dockerfile_CH

Запускаем сборку образа командой:

sudo docker build -f Dockerfile_CH --force-rm -t clickhouse-superset:3.1.1 .

После локальной сборки образа, его нужно добавить в качестве источника, для развертывания в контейнерах:

clickhouse-superset:3.1.1
Ivan Shamaev (Admin)
Работаю с Apache Superset с 2021 года. Веду этот блог, чтобы систематизировать свои знания и поделиться ими с другими специалистами. Подписывайтесь на мой телеграм канал @apache_superset_bi
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x