Подключение к 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













2 Comments