BI Consult Desktop Logo BI Consult Mobile Logo
  • Russian BI Исследование российских bi
  • Перейти на Fine BI
  • Контакты
  • +7 812 334-08-01
    +7 499 608-13-06
  • Отправить сообщение
  • Главная
  • Продукты Эксперт-BI
    • Дистрибуция
    • Розничная торговля
    • Производство
    • Операторы связи
    • Страхование
    • Банки
    • Лизинг
    • Логистика
    • Нефтегазовый сектор
    • Медицина
    • Сеть ресторанов
    • E-Commerce
    • Сельское хозяйство
    • Энергетика
    • FMCG
    • Девелоперы
    • Маркетплейсы
    • Пищевая промышленность
    • Фармацевтика
    • Построение Data Platform
    • Цифровая трансформация
    • Управление по KPI
    • Финансы
    • Продажи
    • Склад
    • HR
    • Маркетинг
    • Внутренний аудит
    • Категорийный менеджмент
    • S&OP и FP&A
    • Геоаналитика
    • Цепочки поставок (SCM)
    • AutoML
    • Process Mining
    • IBP
    • ИТ (CIO)
    • Закупки
  • Платформы
    • Системы бизнес-анализа (BI)
    • Интегрированное бизнес-планирование (IBP)
    • Хранилища данных (DWH / Lakehouse)
    • Каталоги данных (Data Catalog)
    • Системы ETL и ELT
    • AI / Исскуственный интеллект
    • Шина данных (ESB)
    • Система управления мастер-данными (MDM)
    • Семантический слой
  • Услуги
    • Переход на отечественные BI и DWH системы
    • Консалтинг
    • Пилотный проект
    • Обучение и сертификация
    • Бесплатное обучение
    • Поддержка
    • Технические задания
    • Сбор требований для проекта внедрения BI-системы
    • CI/CD для DWH
    • Аудит BI приложений и DWH
    • Выделенная команда
    • Настойка и поддержка баз данных
    • Разработка BI Стратегии
    • Styleguide для BI-системы
    • Как выбрать BI-систему
  • Курсы
    • Учебный курс Информационная грамотность (Data Literacy)
    • Учебный курс для бизнес-аналитиков
    • Учебный курс для системных аналитиков
    • Учебный курс по Data Governance
    • Учебный курс Как стать CDO
    • Учебный курс Современная архитектура хранилища данных
    • Учебный курс по Fine BI
    • Учебный курс по FineReport
    • Учебный курс по DWH
    • Учебный курс по Data Science (ML, AI)
    • Учебный курс по PostgreSQL
    • Учебный курс по Greenplum
    • Учебный курс по Apache Airflow и NiFi
    • Учебный курс по Open-source BI
    • Учебный курс по ClickHouse
    • Учебный курс по DataLens
    • Учебный курс по Loginom
    • Учебный курс по Modus BI и ETL
    • Учебный курс по Visiology
    • Учебный курс по dbt (Data Build Tool)
  • Компания
    • Руководство
    • Новости
    • Клиенты
    • Карьера
    • Скачать
    • Контакты

BI

  • FineBI
  • FineReport
  • FineDataLink
  • FineChatBI (FineAI)
  • Коннекторы данных из 1С в BI
  • Airflow / Nifi
  • Visiology
  • PIX BI
  • Modus BI
  • Yandex.DataLens
  • Open-source BI: Superset/Metabase
  • Luxms BI
  • AW BI + Alpha BI
  • FlyBI + Форсайт. Аналитическая Платформа
  • Loginom
  • Триафлай
  • AI / Исскуственный интеллект
  • Optimacros
  • Навигатор BI
  • Семантический слой

СУБД

  • Arenadata
  • ClickHouse
  • Greenplum
  • Postgres Professional
  • TData

Другое

  • Построение Data Platform
    • Аналитическое хранилище данных
    • Data Lake и Data Engineering
    • Подробнее про Data Lake
    • Внедрение Lakehouse
      • Apache Doris
      • StarRocks
      • Trino
    • Миграция витрин из пропиетарных DWH на новый стек
    • Учебный курс "Современная архитектура хранилища данных"
Главная » Курсы по системам бизнес-анализа и методологии » Учебный курс по Open-source BI - Apache Superset, Metabase, Redash » Apache Superset - Установка и настройка

Apache Superset - Установка и настройка

  1. Начало работы
  2. Дружит с Облаком!
  3. Стартуйте с Docker
  4. Особенности в зависимости от используемой ОС
  5. VirtualEnv в Python
  6. Инструменты настройки Python и pip
  7. Установка и инициализация Superset
  8. Правильный HTTP-сервер WSGI
  9. Права доступа Flask-AppBuilder
  10. Балансировщик нагрузки
  11. Настройка
  12. Подключение к базам данных
  13. (AWS) Athena
  14. Snowflake
  15. Teradata
  16. Кэширование
  17. Глубокая интеграция SQLAlchemy
  18. Схемы (Postgres и Redshift)
  19. Внешнее хранилище паролей для SQLAlchemy соединений
  20. SSL-доступ к базам данных
  21. Druid
  22. CORS
  23. Промежуточное ПО
  24. Обновление
  25. SQL Lab
  26. Сборка из исходников
  27. Blueprints
  28. StatsD
  29. Запуск в Kubernetes
  30. Пользовательская конфигурация OAuth2

 

Начало работы

Superset приостановил работу на Python 2. и поддерживает только ~= 3.6, что дает возможность воспользоваться преимуществами новых функций Python и снизить нагрузку на предыдущие версии. Мы запускаем наш тестовый пакет для версии 3.6, но работа с версией 3.7 также должна быть успешной.

 

Дружит с Облаком!

Superset спроектирован таким образом, чтобы быть максимально доступным. Он “дружит с облаком”, поскольку  хорошо работает в больших распределенных средах, а также внутри контейнеров. Вы можете совершенно спокойно протестировать  Superset на своем ноутбуке, фактически его масштабирование практически не ограничено. Superset также сloud friendly и в том смысле, что эта платформа достаточно гибкая и позволяет работать с  вэб-серверами (Gunicorn, Nginx, Apache), базами метаданных  (MySQL, Postgres, MariaDB, …), брокерами сообщений (Redis, RabbitMQ, SQS, …), бекэндами (S3, Redis, Memcached, …), кэшированием (Memcached, Redis, …), хорошо работает с такими сервисами, как NewRelic, StatsD и DataDog, имеет возможность выполнять аналитические процессы для большинства популярных технологий баз данных.

Superset протестирован в больших средах с сотнями одновременных пользователей. Производственная среда Airbnb работает внутри Kubernetes и ежедневно обслуживает более 600 активных пользователей, просматривающих более 100 000 диаграмм в день.

Веб-сервер Superset и работники Superset Celery (опционально) не имеют гражданства, поэтому вы можете запускать столько серверов, сколько необходимо.

 

Стартуйте с Docker

Если Вы знаком с Docker, считайте, что Вам крупно повезло, у нас есть короткий путь, позволяющий инициализировать среду разработки:

 

git clone https://github.com/apache/incubator-superset/
cd incubator-superset
cp contrib/docker/{docker-build.sh,docker-compose.yml,docker-entrypoint.sh,docker-init.sh,Dockerfile} .
cp contrib/docker/superset_config.py superset/
bash -x docker-build.sh
docker-compose up -d
docker-compose exec superset bash
bash docker-init.sh
 

По истечении нескольких минут, необходимых для завершения инициализации Superset, откройте браузер и выберите http://localhost:8088 для того, чтобы начать Ваше путешествие.

Если Вы хотите работать на MAC, предоставляем инструкцию для OSX: https://docs.docker.com/docker-for-mac/#advanced

Или, если Вы супер любопытный и хотите установить Superset по полной программе, то вперед!

 

Особенности в зависимости от используемой ОС

Superset хранит информацию о подключении к базе данных в своей базе метаданных. Поэтому мы используем библиотеку Python для шифрования паролей подключения. К сожалению, она ориентируется на различные ОС.

Вы можете попробовать выполнить следующий шаг («Установка и инициализация Superset») и вернуться к этому шагу, если обнаружите ошибку.

 

Начнем установку:

Для Debian и Ubuntu необходима следующая команда:

 

sudo apt-get install build-essential libssl-dev libffi-dev python-dev python-pip libsasl2-dev libldap2-dev

 

Ubuntu 16.04. Если у Вас установлен Python3.5 наряду с Python2.7, как по умолчанию в Ubuntu 16.04 LTS, также выполните эту команду:

 

sudo apt-get install build-essential libssl-dev libffi-dev python3.5-dev python-pip libsasl2-dev libldap2-dev

 

Для Fedora and RHEL необходима следующая команда:

 

sudo yum upgrade python-setuptools
sudo yum install gcc gcc-c++ libffi-devel python-devel python-pip python-wheel openssl-devel libsasl2-devel openldap-devel

 

OSX. Установите Python с помощью Homebrew через pip:

 

brew install pkg-config libffi openssl python
env LDFLAGS="-L$(brew --prefix openssl)/lib" CFLAGS="-I$(brew --prefix openssl)/include" pip install cryptography==1.9

 

На данный момент Windows официально не поддерживается, но если вы все-таки хотите попробовать, загрузите get-pip.py и запустите python get-pip.py ,для которого может потребоваться доступ администратора. Затем выполните следующее:

 

C:\>pip install cryptography 

# You may also have to create C:\Temp
C:\> md C:\Temp

 

VirtualEnv в Python

Рекомендуем установит Superset в VirtualEnv. У Python 3 уже есть VirtualEnv, для Python 2 необходимо его установить. Если он уже есть в Вашей операционной системе, установите его, в противном случае Вы можете сделать это через pip.:

 

 pip install virtualenv 

 

Вы можете создать и активировать VirtualEnv следующим образом:

 

# virtualenv is shipped in Python 3 as pyvenv
virtualenv venv
. ./venv/bin/activate 

 

Для Windows команда активации выглядит следующим образом:

 

venv\Scripts\activate

 

Как только VirtualEnv активирована, все, что Вы делаете, происходит в пределах VirtualEnv. Для того, чтобы покинуть среду, просто напечатайте  deactivate.

 

Инструменты настройки Python и pip

Повысьте свои шансы на успех, установив самые последние версии  pip и библиотеки setuptools:

pip install --upgrade setuptools pip

 

Установка и инициализация Superset

Для установки  Superset следуйте следующему алгоритму:

 

# Install superset
pip install superset

# Create an admin user (you will be prompted to set username, first and last name before setting a password)
fabmanager create-admin --app superset

# Initialize the database
superset db upgrade

# Load some data to play with
superset load_examples

# Create default roles and permissions
superset init

# To start a development

 

После установки Вы сможете вбить в Вашем браузере следующее: http://localhost:8088, войти в систему, используя учетные данные, которые Вы ввели при создании учетной записи администратора, перейти в Меню -> Администратор -> Обновить метаданные. Это действие должно привести к тому, что Superset будет знать обо всех ваших источниках данных, и они должны появиться в Меню -> Источники данных, откуда Вы сможете наконец-то начать играть со своими данными!

 

Узнать стоимость решенияЗапросить видео презентацию

 

Правильный HTTP-сервер WSGI

Хотя Вы можете настроить Superset для работы на Nginx или Apache, многие используют Gunicorn, предпочтительно в асинхронном режиме, который довольно прост в установке и настройке. Пожалуйста, обратитесь к документации предпочитаемой Вами технологии, чтобы настроить приложение Flask WSGI так, чтобы оно хорошо работало именно В вашей среде. Вот асинхронная установка:

 

gunicorn \
              -w 10 \
              -k gevent \
              --timeout 120 \
              -b  0.0.0.0:6666 \
              --limit-request-line 0 \
              --limit-request-field_size 0 \
              --statsd-host localhost:8125 \
              superset:app
 

Для получения дополнительной информации обратитесь к Gunicorn документации.

Обратите внимание, что Gunicorn не работает в Windows, поэтому команда superset runserver работать не будет. Также обратите внимание, что веб-сервер (superset runserver -d) не предназначен для использования в производственной среде.

Если Вы не используете Gunicorn, можете отключить использование flask-compress, установив ENABLE_FLASK_COMPRESS = False в вашем superset_config.py.

 

Права доступа Flask-AppBuilder

По умолчанию каждый раз при инициализации приложения Flask-AppBuilder (FAB) права доступа и представления автоматически добавляются в серверную часть и связываются с ролью «Администратора». Однако проблема заключается в том, что когда Вы одновременно запускаете несколько рабочих процессов, это создает множество конфликтов и условий для «гонки» при определении прав доступа и представлений.

Чтобы решить эту проблему, автоматическое обновление прав доступа можно отключить, установив для SUPERSET_UPDATE_PERMS значение 0. Значение 1 включает его, 0 — отключает. Обратите внимание, что если функция не определена, она включена для обеспечения обратной совместимости.

В производственной среде инициализация может принимать следующую форму:

 

export SUPERSET_UPDATE_PERMS=1 superset init

export SUPERSET_UPDATE_PERMS=0 gunicorn -w 10 … superset:app

 

Балансировщик нагрузки

Если Вы используете Superset при балансировщике нагрузки или обратном прокси-сервером (например, NGINX или ELB на AWS), Вам может потребоваться использование конечной точки мониторинга работоспособности, чтобы Ваш балансировщик нагрузки знал, работает ли Ваш Superset. Это предоставлено в /health, который отдает 200 ОК, если веб-сервер работает.

Если балансировщик нагрузки вводит хедер X-Forwarded-For/X-Forwarded-Proto, Вы должны установить ENABLE_PROXY_FIX = True в файле конфигурации Superset, чтобы использовать хедеры.

В случае, если обратный прокси-сервер используется для обеспечения SSL, может потребоваться явное указание X-Forwarded-Proto. Для веб-сервера Apache это можно установить следующим образом:

 

 RequestHeader set X-Forwarded-Proto "https"

 

Настройка

Чтобы настроить Ваше приложение, нужно создать файл (модуль) superset_config.py и убедиться, что он находится в Вашем PYTHONPATH. Вот некоторые параметры, которые Вы можете скопировать/вставить в этот модуль настройки:

 

#---------------------------------------------------------
# Superset specific config
#---------------------------------------------------------
ROW_LIMIT = 5000
SUPERSET_WEBSERVER_PORT = 8088

#---------------------------------------------------------
#---------------------------------------------------------
# Flask App Builder configuration#---------------------------------------------------------
# Your App secret key
SECRET_KEY = '\2\1thisismyscretkey\1\2\e\y\y\h'

# The SQLAlchemy connection string to your database backend
# This connection defines the path to the database that stores your
# superset metadata (slices, connections, tables, dashboards, ...).
# Note that the connection information to connect to the datasources
# you want to explore are managed directly in the web UI
SQLALCHEMY_DATABASE_URI = 'sqlite:////path/to/superset.db'

# Flask-WTF flag for CSRF
WTF_CSRF_ENABLED = True

# Add endpoints that need to be exempt from CSRF protection
WTF_CSRF_EXEMPT_LIST = []

# A CSRF token that expires in 1 year
WTF_CSRF_TIME_LIMIT = 60 * 60 * 24 * 365

# Set this API key to enable Mapbox visualizations
MAPBOX_API_KEY = ''

 

Все параметры и значения по умолчанию, определенные в https://github.com/apache/incubator-superset/blob/master/superset/config.py , можно изменить в Вашем локальном superset_config.py. Администраторам необходимо  прочитать данный файл, чтобы понять, что можно настроить локально, а также ознакомиться со значениями по умолчанию.

Поскольку superset_config.py действует как модуль конфигурации Flask, его можно использовать для изменения настроек самого Flask, а также расширений Flask, таких как flask-wtf, flask-caching, flask-migrateи flask-appbuilder. Flask App Builder, веб-фреймворк, используемый Superset, предлагает множество настроек конфигурации. Пожалуйста, обратитесь к документации Flask App Builder для получения дополнительной информации о том, как его настроить.

 

Обязательно измените:

  • SQLALCHEMY_DATABASE_URI, по умолчанию он хранится в ~/.superset/superset.db
  • SECRET_KEY, в длинную случайную строку

Если Вам нужно исключить конечные точки из CSRF (например, если вы используете пользовательскую конечную точку постбэка аутентификации), Вы можете добавить конечные точки в:

 

WTF_CSRF_EXEMPT_LIST
WTF_CSRF_EXEMPT_LIST = [‘’]

 

Подключение к базам данных

Superset не поставляется в комплекте с возможностью подключения к базам данных, за исключением Sqlite, которая является частью стандартной библиотеки Python. Вам нужно установить необходимые пакеты для базы данных, которую Вы хотите использовать в качестве базы метаданных, а также пакеты, необходимые для подключения к базам данных, к которым Вы хотите получить доступ через Superset.

Предоставляем список некоторых рекомендованных пакетов.

База данных

Пакет pypi

Префикс URI

MySQL

pip install mysqlclient

mysql://

Postgres

pip install psycopg2

postgresql+psycopg2://

Presto

pip install pyhive

presto://

Hive

pip install pyhive

hive://

Oracle

pip install cx_Oracle

oracle://

sqlite

 

sqlite://

Snowflake

pip install snowflake-sqlalchemy

snowflake://

Redshift

pip install sqlalchemy-redshift

redshift+psycopg2://

MSSQL

pip install pymssql

mssql://

Impala

pip install impyla

impala://

SparkSQL

pip install pyhive

jdbc+hive://

Greenplum

pip install psycopg2

postgresql+psycopg2://

Athena

pip install "PyAthenaJDBC>1.0.9"

awsathena+jdbc://

Athena

pip install "PyAthena>1.2.0"

awsathena+rest://

Vertica

pip install sqlalchemy-vertica-python

vertica+vertica_python://

ClickHouse

pip install sqlalchemy-clickhouse

clickhouse://

Kylin

pip install kylinpy

kylin://

BigQuery

pip install pybigquery

bigquery://

Teradata

pip install sqlalchemy-teradata

teradata://

 

Обратите внимание, что поддерживаются и многие другие базы данных, основными критериями которых являются наличие библиотеки SqlAlchemy и драйвера Python. Поиск в Google ключевого слова sqlalchemy в дополнение к ключевому слову, описывающему базу данных, к которой Вы хотите подключиться, должен привести Вас в нужное место.

 

(AWS) Athena

Строка подключения к Athena выглядит следующим образом:

 

awsathena+jdbc://{aws_access_key_id}:{aws_secret_access_key}@athena.{region_name}.amazonaws.com/{schema_name}?s3_staging_dir={s3_staging_dir}&...

 

Где Вам нужно закодировать как минимум s3_staging_dir, т. е.,

 

s3://... -> s3%3A//...

 

Вы также можете использовать библиотеку PyAthena  (нет необходимости в java) следующим образом:

 

awsathena+rest://{aws_access_key_id}:{aws_secret_access_key}@athena.{region_name}.amazonaws.com/{schema_name}?s3_staging_dir={s3_staging_dir}&...

 

Смотрите PyAthena.

 

Snowflake

Строка подключения к Snowflake выглядит следующим образом:

 

snowflake://{user}:{password}@{account}.{region}/{database}?role={role}&warehouse={warehouse}

 

Схема не требуется в строке подключения, так как она определяется для таблицы/запроса. Роль и хранилище можно не указывать, если для пользователя определены значения по умолчанию, т.е.

 

snowflake://{user}:{password}@{account}.{region}/{database}

 

Убедитесь, что у пользователя есть права доступа и использования всех необходимых баз данных/схем/таблиц/представлений/хранилищ, так как движок Snowflake SQLAlchemy не проверяет права пользователя.

Примечание: На момент написания этой статьи в текущей стабильной версии (1.1.2) пакета snowflake-sqlalchemy наблюдалась регрессия, которая вызывала проблемы при использовании с Superset. Рекомендуется использовать версию 1.1.0 или попробовать более новую версию.

Смотрите Snowflake SQLAlchemy.

 

Teradata

Строка подключения к Teradata выглядит следующим образом:

 

teradata://{user}:{password}@{host}

 

Примечание: для правильной работы sqlalchemy необходимо установить драйверы Teradata ODBC и настроить переменные среды. Драйверы Teradata ODBC доступны здесь: https://downloads.teradata.com/download/connectivity/odbc-driver/linux

Требуемые переменные среды:

 

export ODBCINI=/.../teradata/client/ODBC_64/odbc.ini
export ODBCINST=/.../teradata/client/ODBC_64/odbcinst.ini

 

Смотрите Teradata SQLAlchemy.

 

Кэширование

Superset использует Flask-Cache для кэширования. Настроить кэширование так же просто, как CACHE_CONFIG и предоставить его DATA_CACHE_CONFIG в superset_config.py в соответствии со спецификациями Flask-Caching.

Flask-Caching поддерживает различные механизмы кэширования, включая Redis, Memcached, SimpleCache (в памяти) или локальную файловую систему. Если Вы собираетесь использовать Memcached, используйте клиентскую библиотеку pylibmc, поскольку python-memcached не поддерживает правильное хранение двоичных данных. Если Вы используете Redis, установите пакет Redis Python:

 

pip install redis

 

Для установки тайм-аутов, заходим в метаданные Superset, поднимаемся по «timeout searchpath», от конфигурации среза к источнику данных, базе данных, а затем в конечном итоге возвращается к глобальному значению по умолчанию, определенному в CACHE_CONFIG.

 

CACHE_CONFIG = {
        'CACHE_TYPE': 'redis',
        'CACHE_DEFAULT_TIMEOUT': 60 * 60 * 24, # 1 day default (in secs)
        'CACHE_KEY_PREFIX': 'superset_results',
        'CACHE_REDIS_URL': 'redis://localhost:6379/0',
    }

 

Глубокая интеграция SQLAlchemy

Можно настроить информацию о соединении с базой данных, используя параметры, предоставляемые SQLAlchemy. В представлении Database edit вы можете редактировать Extra поле как двоичный объект JSON.

Эта строка JSON содержит дополнительные элементы конфигурации. Объект engine_params распаковывается в sqlalchemy.create_engine, а metadata_params распаковывается в sqlalchemy.MetaData. Дополнительные сведения см. в документации по SQLAlchemy.

 

Узнать стоимость решенияЗапросить видео презентацию

 

Схемы (Postgres и Redshift)

Такие базы данных, как Postgres и Redshift, используют схему в качестве логической сущности поверх базы данных. Чтобы Superset подключался к определенной схеме, можно задать параметр схема в форме «Edit Tables»

 

Внешнее хранилище паролей для SQLAlchemy соединений

Superset можно настроить для использования внешнего хранилища паролей базы данных. Это полезно, если Вы используете собственную структуру хранения секретных данных и не хотите хранить их в метабазе данных Superset.

Пример. Напишите функцию, которая принимает один аргумент типа sqla.engine.url и возвращает пароль для данной строки подключения. Затем установите SQLALCHEMY_CUSTOM_PASSWORD_STORE в файле конфигурации, чтобы он указывал на эту функцию.

 

def example_lookup_password(url):
    secret = <<get password from external framework>>
    return 'secret'

SQLALCHEMY_CUSTOM_PASSWORD_STORE = example_lookup_password

 

Распространенным шаблоном является использование переменных среды, чтобы сделать секретные данные доступными. Также может быть использован для этой цели SQLALCHEMY_CUSTOM_PASSWORD_STORE.

 

def example_password_as_env_var(url):
    # assuming the uri looks like
    # mysql://localhost?superset_user:{SUPERSET_PASSWORD}
    return url.password.format(os.environ)

SQLALCHEMY_CUSTOM_PASSWORD_STORE = example_password_as_env_var
 
 

SSL-доступ к базам данных

Этот пример работал с базой данных MySQL, для которой требуется SSL. Конфигурация может отличаться от других серверных частей. Это то, что было помещено в параметр Extra.

 

{
    "metadata_params": {},
    "engine_params": {
          "connect_args":{
              "sslmode":"require",
              "sslrootcert": "/path/to/my/pem"
        }
     }
}
 

 

Druid

  • В пользовательском интерфейсе введите информацию о своих кластерах в меню Источники -> Druid Кластеры, нажав знак +;
  • После ввода информации о подключении кластера Druid нажмите пункт меню «Источники» -> «Обновить метаданные Druid»;
  • Перейдите к своим источникам данных.

Обратите внимание, что можно использовать команду superset refresh_druid для обновления метаданных в кластере (ах) Druid.

 

CORS

CORS можно установить следующим образом:

 

superset[cors]

 

Для настройки CORS необходимо прописать следующее в superset_config.py:

  • ENABLE_CORS: должно быть установлено True, чтобы включить CORS;
  • CORS_OPTIONS: параметры, переданные в Flask-CORS (документация http://flask-cors.corydolphin.com/en/latest/api.html#extension )

 

Промежуточное ПО

Superset позволяет добавлять собственное промежуточное ПО. Чтобы добавить собственное промежуточное ПО, обновите ADDITIONAL_MIDDLEWARE ключ в файле superset_config.py. ADDITIONAL_MIDDLEWARE должен быть списком Ваших дополнительных классов промежуточного программного обеспечения.

Например, чтобы использовать AUTH_REMOTE_USER из прокси-сервера, такого как nginx, вам нужно добавить простой класс промежуточного программного обеспечения, чтобы добавить значение HTTP_X_PROXY_REMOTE_USER (или любой другой пользовательский заголовок из прокси) в переменную среды Gunicorn REMOTE_USER.:

 

class RemoteUserMiddleware(object):
    def __init__(self, app):
        self.app = app
    def __call__(self, environ, start_response):
        user = environ.pop('HTTP_X_PROXY_REMOTE_USER', None)
        environ['REMOTE_USER'] = user
        return self.app(environ, start_response)

ADDITIONAL_MIDDLEWARE = [RemoteUserMiddleware, ]

 

Материал взят и адаптирован из  http://flask.pocoo.org/snippets/69/

 

Обновление

Для обновления используйте:

pip install superset --upgrade
superset db upgrade
superset init

 

SQL Lab

SQL Lab – мощное SQL IDE, которое работает со всеми базами данных, совместимыми с SQLAlchemy. По умолчанию запросы выполняются в рамках веб-запроса, поэтому время ожидания может истечь, поскольку запросы превышают максимальную продолжительность веб-запроса в Вашей среде, будь то обратный прокси-сервер или сам сервер Superset.

В больших аналитических базах данных обычно выполняются запросы, которые обрабатываются в течение нескольких минут или даже часов. Чтобы включить поддержку длительных запросов, необходимо настроить асинхронный сервер для Superset, который состоит из:

  • одного или несколько рабочих процессов Superset (которые реализованы как рабочие процессы Celery) и могут быть запущены с помощью celery worker командой run celery worker --help для просмотра связанных параметров;
  • брокера celery (очередь сообщений), для которого мы рекомендуем использовать Redis или RabbitMQ;
  • серверной части результатов, которая определяет, где рабочий процесс будет сохранять результаты запроса.

 

Для настройки Celery требуется определить CELERY_CONFIG в Вашем файле superset_config.py. И рабочие процессы, и процессы веб-сервера должны иметь одинаковую конфигурацию:

 

class CeleryConfig(object):
    BROKER_URL = 'redis://localhost:6379/0'
    CELERY_IMPORTS = ('superset.sql_lab', )
    CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'
    CELERY_ANNOTATIONS = {'tasks.add': {'rate_limit': '10/s'}}

CELERY_CONFIG = CeleryConfig

 

Чтобы запустить рабочий процесс Celery для использования конфигурации, выполните следующую команду:

 

 celery worker --app=superset.sql_lab:celery_app --pool=gevent -Ofair

 

Чтобы настроить серверную часть результатов, Вам нужно передать экземпляр производной от cachelib.base.BaseCache в ключ конфигурации RESULTS_BACKEND в Вашем superset_config.py. Вы можете использовать Memcached, Redis, S3 (https://pypi.python.org/pypi/s3werkzeugcache ), память или файловую систему (в конфигурации с одним сервером или для тестирования) или написать свой собственный интерфейс кэширования. Ваш superset_config.py может выглядеть примерно так:

 

# On S3
from s3cache.s3cache import S3Cache
S3_CACHE_BUCKET = 'foobar-superset'
S3_CACHE_KEY_PREFIX = 'sql_lab_result'
RESULTS_BACKEND = S3Cache(S3_CACHE_BUCKET, S3_CACHE_KEY_PREFIX)

# On Redis
from werkzeug.contrib.cache import RedisCache
RESULTS_BACKEND = RedisCache(
    host='localhost', port=6379, key_prefix='superset_results')

 

Важно, чтобы все рабочие узлы и веб-серверы в кластере RT.DataVision использовали общую базу данных метаданных. Это означает, что SQLite не будет работать в этом контексте, поскольку он имеет ограниченную поддержку параллелизма и обычно находится в локальной файловой системе.

Также обратите внимание, что SQL Lab поддерживает шаблоны Jinja и что можно перегрузить контекст Jinja по умолчанию в Вашей среде, определив JINJA_CONTEXT_ADDONS в используемой конфигурации Superset. Объекты, на которые есть ссылки в этом словаре, доступны пользователям для использования в SQL.

 

JINJA_CONTEXT_ADDONS = {
    'my_crazy_macro': lambda x: x*2,
}

 

Flower — это веб-инструмент для мониторинга кластера Celery, который Вы можете установить через pip.

 

pip install flower

 

и запустить через:

 

celery flower --app=superset.sql_lab:celery_app

 

Сборка из исходников

Более продвинутые пользователи могут захотеть собрать Superset из исходников. Вы сможете разветвить проект, чтобы добавить функции, характерные для именно для Вашей среды. Смотрите CONTRIBUTING.md.

 

Blueprints

Blueprints – приложения Flask. Superset позволяет указать множество Blueprints в модуле superset_config. Вот пример того, как это может работать с простым Blueprint. Такой способ позволит добиться того, чтобы Superset обслуживал страницу, отвечающую «ОК» по URL-адресу /simple_page. Это может позволить Вам запускать другие приложения, например, для визуализации данных, вместе с Superset на одном сервере.

 

from flask import Blueprint
simple_page = Blueprint('simple_page', __name__,
                                template_folder='templates')
@simple_page.route('/', defaults={'page': 'index'})
@simple_page.route('/<page>')
def show(page):
    return "Ok"

BLUEPRINTS = [simple_page]

 

StatsD

При желании Superset можно настроить для регистрации событий в StatsD. Большинство обращений к конечным точкам, а также ключевые события, такие как начало и завершение запроса, регистрируются в SQL Lab.

 

Чтобы настроить ведение журнала StatsD, нужно настроить регистрацию событий в файле superset_config.py.

 

from superset.stats_logger import StatsdStatsLogger
STATS_LOGGER = StatsdStatsLogger(host='localhost', port=8125, prefix='superset')

 

Обратите внимание, что вы также можете реализовать свою собственную регистрацию событий, получив superset.stats_logger.BaseStatsLogger.

 

Запуск в Kubernetes

Установить Superset в Kubernetes можно с помощью Helm <https://helm.sh/>. Чарт находится в install/helm.

Команда для установки в Kubernetes:

 

helm upgrade --install superset ./install/helm/superset

 

Обратите внимание, что приведенная выше команда по умолчанию установит Superset в пространство имен Kubernetes.

 

Пользовательская конфигурация OAuth2

Помимо поставщиков, поддерживаемых FAB (Github, Twitter, LinkedIn, Google, Azure и т. д.), Superset легко подключить к другим представителям с OAuth2, которые поддерживают авторизацию «кода».

Сначала настройте авторизацию в superset_config.py.

 

AUTH_TYPE = AUTH_OAUTH
OAUTH_PROVIDERS = [
    {   'name':'egaSSO',
        'token_key':'access_token', # Name of the token in the response of access_token_url
        'icon':'fa-address-card',   # Icon for the provider
        'remote_app': {
            'consumer_key':'myClientId',  # Client Id (Identify Superset application)
            'consumer_secret':'MySecret', # Secret for this Client Id (Identify Superset application)
            'request_token_params':{
                'scope': 'read'               # Scope for the Authorization
            },
            'access_token_method':'POST',   # HTTP Method to call access_token_url
            'access_token_params':{         # Additional parameters for calls to access_token_url
                'client_id':'myClientId'
            },
            'access_token_headers':{        # Additional headers for calls to access_token_url
                'Authorization': 'Basic Base64EncodedClientIdAndSecret'
            },
            'base_url':'https://myAuthorizationServer/oauth2AuthorizationServer/',
            'access_token_url':'https://myAuthorizationServer/oauth2AuthorizationServer/token',
            'authorize_url':'https://myAuthorizationServer/oauth2AuthorizationServer/authorize'
        }
    }
]

# Will allow user self registration, allowing to create Flask users from Authorized User
AUTH_USER_REGISTRATION = True

# The default user self registration role
AUTH_USER_REGISTRATION_ROLE = "Public"
 

Затем создайте CustomSsoSecurityManager расширение SupersetSecurityManager и переопределение в auth_user_info:

 

class CustomSsoSecurityManager(SupersetSecurityManager):

    def oauth_user_info(self, provider, response=None):
        logging.debug("Oauth2 provider: {0}.".format(provider))
        if provider == 'egaSSO':
            # As example, this line request a GET to base_url + '/' + userDetails with Bearer  Authentication,
            # and expects that authorization server checks the token, and response with user details
            me = self.appbuilder.sm.oauth_remotes[provider].get('userDetails').data
            logging.debug("user_data: {0}".format(me))
            return { 'name' : me['name'], 'email' : me['email'], 'id' : me['user_name'], 'username' : me['user_name'], 'first_name':'', 'last_name':''}
        ...
 

Наконец, добавьте следующие записи в superset_config.py:

 

from custom_sso_security_manager import CustomSsoSecurityManager
CUSTOM_SECURITY_MANAGER = CustomSsoSecurityManager

 

 

Узнать стоимость решенияЗапросить видео презентацию

 

← Предыдущая статья
Apache Superset - вступление
Следующая статья →
Apache Superset - Создание Вашего первого дашборда
Запросить видео презентацию Запросить доступ к демо стенду online Узнать стоимость лицензий

Задать вопрос

loading...

Решения

Анализировать ФинансыУвеличивайте ПродажиОптимальный Склад и ЛогистикаМаркетинговые Метрики

Клиенты
  • ИНВИТРО
    ИНВИТРО – крупнейшая частная медицинская компания в России, специализирующаяся на лабораторной диагностике и оказании других медицинских услуг.
     
    ИНВИТРО располагает 9 самыми современными лабораторными комплексами и крупнейшей в Восточной Европе сетью более чем из 900 медицинских офисов. Страны присутствия — Россия, Украина, Казахстан, Беларусь.
     
  • АО «НСПК» - оператор национальной системы платежных карт, который предоставляет операционные услуги и услуги платежного клиринга операторам платежных систем, в том числе Банку России и кредитным организациям. В задачи АО «НСПК» входит обеспечение бесперебойного доступа к переводам денежных средств в Российской Федерации с использованием платежных инструментов.  Также компания является оператором национальной платёжной системы «Мир» и операционным и платёжным клиринговым центром Системы быстрых платежей (СБП).

  • ООО "Интернэшнл Ресторант Брэндс" – это крупнейший франчайзинговый партнер компании Yum! Brands Russia & CIS в России, отвечающий за рост и развитие бренда KFC на территории РФ. На сегодняшний день у компании более 350 ресторанов. Ежедневно в рестораны приходит 200 000+ гостей.

  • КАМИ – компания-лидер по поставкам тяжёлых станков в России, занимающаяся продажей и обслуживанием оборудования для обработки металла и дерева, изготовления мебели и не только. На сегодняшний день в компании работают более 1300 человек, запущено 10 обучающих центров, в продаже более 7000 единиц техники. 

  • Решения
    • Дистрибуция
    • Розничная торговля
    • Производство
    • Операторы связи
    • Страхование
    • Банки
    • Лизинг
    • Логистика
    • Нефтегазовый сектор
    • Медицина
    • Сеть ресторанов
    • E-Commerce
    • Энергетика
    • Фармацевтика
  • Услуги
    • Переход на отечественные BI и DWH
    • Консалтинг
    • Пилотный проект
    • Обучение и сертификация
    • Бесплатное обучение
    • Техническая поддержка
    • Технические задания
    • Сбор требований для проекта внедрения BI-системы
    • CI/CD для DWH
    • Аудит BI приложений
    • Выделенная команда
    • Настойка и поддержка баз данных
    • Разработка BI Стратегии
    • Styleguide для BI-системы
    • Как выбрать BI-систему
  • Платформы
    • FineBI
    • FineReport
    • FineDataLink
    • Коннекторы данных из 1С в BI
    • Airflow + NiFi
    • Visiology
    • Luxms BI
    • Modus BI
    • PIX BI
    • Arenadata
    • ClickHouse
    • Greenplum
    • Postgres Professional
    • Open-source BI: Superset/Metabase
    • Loginom
    • Yandex.DataLens
    • AI / Исскуственный интеллект
    • Optimacros
    • Шины данных
  • Курсы
    • Учебный курс Информационная грамотность
    • Учебный курс для бизнес-аналитиков
    • Учебный курс для системных аналитиков
    • Учебный курс по Data Governance
    • Учебный курс Как стать CDO
    • Учебный курс Современная архитектура хранилища данных
    • Учебный курс по Fine BI
    • Учебный курс по FineReport
    • Учебный курс по DWH
    • Учебный курс по Data Science (ML, AI)
    • Учебный курс по PostgreSQL
    • Учебный курс по Apache Airflow и NiFi
    • Учебный курс по Open-source BI
    • Учебный курс по ClickHouse
    • Учебный курс по DataLens
    • Учебный курс по Loginom
    • Учебный курс по Modus BI и ETL
    • Учебный курс по Visiology
    • Учебный курс по dbt
  • Функциональные решения
    • Создание Data Lake
    • Цифровая трансформация
    • Управление по KPI
    • Финансы
    • Продажи
    • Склад
    • HR
    • Маркетинг
    • Внутренний аудит
    • Категорийный менеджмент
    • S&OP и прогнозная аналитика
    • Геоаналитика
    • Цепочки поставок (SCM)
    • AutoML
    • Process Mining
    • Сквозная аналитика
  • Компания
    • О нас
    • Руководство
    • Новости
    • Клиенты
    • Скачать
    • Контакты
    • Политика конфиденциальности
RutubeVkontakteLinkedInYouTube
ООО "Би Ай Консалт",
ИНН: 7811437757,
ОГРН: 1097847154184
199178, Россия,
Санкт-Петербург,
6-ая линия В.О., Д. 63, 4 этаж
Тел: +7 (812) 334-08-01
Тел: +7 (499) 608-13-06
E-mail: info@biconsult.ru

 

 

 

 

 

×

Пользуясь сайтом, вы соглашаетесь с использованием cookies и политикой конфиденциальности.