一.Superset 简介
Apache Superset 是一个现代化的 开源数据可视化与数据探索平台。它最初由 Airbnb 开发,现在由 Apache 基金会托管和维护。它的定位是 轻量级 BI ( 商业智能 )工具,帮助用户快速把数据转化为图表和仪表盘,用于分析和决策支持
二.环境准备
1.Kubernetes集群(本文使用k8s-1.32版本集群)
2.superset版本选择5.0
3.已安装 Helm
4.官方文档:superset.apache.ac.cn/docs/intro/
三. 安装与初始化
添加 Superset helm 仓库
helm repo add superset https://apache.github.io/superset
#就像任何典型的 Helm 图表一样,您需要编写一个 values.yaml 文件,
#该文件将定义/覆盖默认的 values.yaml 中公开的任何值,或其依赖的任何子图表中的值
#本文采用官方默认配置values.yaml
helm upgrade --install --values my-values.yaml superset superset/superset
#!但由于官方镜像缺少部分依赖,需要自行构建镜像Dockerfile
# 基础镜像,可以改成你需要的 Superset 版本
FROM apache/superset:5.0.0
USER root
# 安装 mysqlclient 所需的系统依赖
RUN apt-get update && \
apt-get install -y --no-install-recommends \
default-libmysqlclient-dev \
build-essential \
pkg-config \
&& rm -rf /var/lib/apt/lists/*
# 设置 Playwright 浏览器路径
ENV PLAYWRIGHT_BROWSERS_PATH=/usr/local/share/playwright-browsers
# 激活 Superset 虚拟环境并安装额外 Python 包
RUN . /app/.venv/bin/activate && \
uv pip install \
# PostgreSQL 驱动
psycopg2-binary \
# SQL Server 驱动
pymssql \
# SSO 认证
Authlib \
# Excel 上传
openpyxl \
# PDF 截图
Pillow \
# Playwright 截图
playwright \
# MySQL 驱动
mysqlclient \
&& playwright install-deps \
&& PLAYWRIGHT_BROWSERS_PATH=/usr/local/share/playwright-browsers playwright install chromium
# 切回 superset 用户
USER superset
# 启动 Superset
CMD ["/app/docker/entrypoints/run-server.sh"]
将构建镜像替换superset与superset-worker服务的镜像,即可正式启动服务
启动后可以使用以下默认凭据登录
- 用户:
admin - 密码:
admin
四. 核心组件配置
因为部分功能superset并未开启,所以需要调整superset-config配置文件来开启变量筛选等功能
import os
from flask_caching.backends.rediscache import RedisCache
#ENABLE_TEMPLATE_PROCESSING = True
#PUBLIC_ROLE_LIKE_GAMMA = True
#开启筛选等功能
FEATURE_FLAGS = {
"DASHBOARD_NATIVE_FILTERS": True,
"DASHBOARD_NATIVE_FILTERS_SET": True,
"ENABLE_TEMPLATE_PROCESSING": True,
"DASHBOARD_CROSS_FILTERS": True,
"HORIZONTAL_FILTER_BAR": True
}
EMBEDDED_SUPERSET = True
WTF_CSRF_ENABLED = False
def env(key, default=None):
return os.getenv(key, default)
#没有的话,就手动生成一个
SECRET_KEY = ""
# Redis Base URL
REDIS_BASE_URL=f"{env('REDIS_PROTO')}://{env('REDIS_HOST')}:{env('REDIS_PORT')}"
# Redis URL Params
REDIS_URL_PARAMS = ""
# Build Redis URLs
CACHE_REDIS_URL = f"{REDIS_BASE_URL}/{env('REDIS_DB', 1)}{REDIS_URL_PARAMS}"
CELERY_REDIS_URL = f"{REDIS_BASE_URL}/{env('REDIS_CELERY_DB', 0)}{REDIS_URL_PARAMS}"
MAPBOX_API_KEY = env('MAPBOX_API_KEY', '')
CACHE_CONFIG = {
'CACHE_TYPE': 'RedisCache',
'CACHE_DEFAULT_TIMEOUT': 300,
'CACHE_KEY_PREFIX': 'superset_',
'CACHE_REDIS_URL': CACHE_REDIS_URL,
}
DATA_CACHE_CONFIG = CACHE_CONFIG
SQLALCHEMY_DATABASE_URI = f"postgresql+psycopg2://{env('DB_USER')}:{env('DB_PASS')}@{env('DB_HOST')}:{env('DB_PORT')}/{env('DB_NAME')}"
SQLALCHEMY_TRACK_MODIFICATIONS = True
class CeleryConfig:
imports = ("superset.sql_lab", )
broker_url = CELERY_REDIS_URL
result_backend = CELERY_REDIS_URL
CELERY_CONFIG = CeleryConfig
RESULTS_BACKEND = RedisCache(
host=env('REDIS_HOST'),
port=env('REDIS_PORT'),
key_prefix='superset_results',
)
配置完成后重启superset与superset-worker服务
同时为了可以公共读(不登陆),需要配置Public角色下列权限(因需要可自行调整权限)
配置完成后superset图表可以实现匿名访问