type
Post
status
Published
date
Mar 31, 2020 21:26
slug
summary
从零开始玩转 Apache Superset:涵盖平台介绍、多系统安装部署、主流数据库与 Druid 数据源配置、交互式图表与仪表盘生成,以及 Chart API 和 Data API 的程序化调用,带你一站式体验轻量级 BI 平台的完整工作流。
tags
Superset
Data Warehouse
category
Data Engineering
icon
password
wordCount
2417
数据可视化工具千千万,但能让你用 Python 一行
pip install 就拉起一个企业级 BI 平台的,Superset 绝对算头一号。这篇文章将带你从零开始,完成 Superset 的安装、数据源配置、Druid 集成、图表生成,一路打到 API 调用——一站式体验"数据变图表"的快感。本文你将收获:
- 理解 Superset 的核心定位与能力边界
- 在 Linux / Mac / Windows 上完成安装部署
- 配置 MySQL、PostgreSQL、Druid 等主流数据源
- 从数据到仪表盘的完整图表生成流程
- 通过 Chart API 和 Data API 实现程序化调用
Superset 是什么?
一句话:Superset 是 Airbnb 开源的轻量级大数据可视化平台。如果说 Tableau 是 BI 界的劳斯莱斯,那 Superset 就是那辆改装过的 GTR——开源、免费、还跑得飞快。
它的核心能力包括:
- 数据源广泛 — 后端支持几乎所有主流数据库,从 MySQL、PostgreSQL 到 Druid、Presto、BigQuery,应有尽有
- 权限管理灵活 — 支持 OpenID、OAuth 等认证方式,企业内部不同部门各取所需
- 可视化丰富 — 内置数十种图表类型,支持自定义 Dashboard 并分享
- 细粒度权限 — 可扩展的数据库级别权限控制,老板看全局,员工看自己
- 展示完全可控 — 自定义展示字段、聚合方式、数据源,想怎么切就怎么切
- 深度集成 Druid — 天生一对,实时 OLAP 查询如虎添翼
应用场景想象: 你可以用 Superset 搭建公司内部的数据看板,实时监控业务指标;也可以作为数据分析师的自助查询平台,让非技术人员通过拖拽生成报表。配合 Druid 做实时聚合,甚至能撑起秒级响应的大屏监控。
环境准备
在动手之前,先检查一下你的工具箱。Superset 已经彻底抛弃了 Python 2(毕竟 2020 年了,Python 2 已经"退休"),最低要求 Python 3.6。
依赖项 | 版本要求 |
Python | 3.6+(推荐 3.7) |
pip | 最新版 |
setuptools | 最新版 |
本文的实验环境:Windows 10 + Python 3.6.8(没错,在 Windows 上硬刚,就是这么勇)。
安装 Superset
创建 Python 虚拟环境
好习惯从隔离环境开始。Python 3 自带
venv 模块,不用额外安装。创建虚拟环境:
激活虚拟环境:
激活成功后,命令行前面会多出一个
(venv) 标识——恭喜,你已经进入了"安全屋"。安装系统依赖
不同操作系统需要的依赖包不同,挑你对应的平台照着来。
Debian / Ubuntu
如果是 Ubuntu 18.04(默认同时装了 Python 3.6 和 2.7),还需要:
CentOS / RHEL
Mac
先确保 XCode 命令行工具已安装(建议升级到最新 macOS):
Windows
Windows 目前尚未被官方正式支持,但这不妨碍我们折腾。先安装
cryptography 包:正式安装
安装 Superset
从阿里云镜像下载,速度起飞:
Windows 用户注意: 后续所有命令需要在 Superset 的 bin 目录下执行,并在命令前加
python:如果 Windows 安装
python-geohash 时报错 Running setup.py bdist_wheel for python-geohash ... error,去 这里 下载对应的 .whl 文件手动安装:初始化数据库
Windows 踩坑提醒: 如果出现
ImportError: cannot import name 'ImmutableDict' from 'werkzeug',将 werkzeug 升级到 0.15 以上即可解决。创建管理员用户
导入样例数据(可跳过)
这一步会下载世界卫生组织的样例数据。网络不好的话可能需要"科学上网",跳过也无妨。
系统初始化
启动服务
Linux 启动后台服务(局域网可访问 + 日志写入文件):
Windows 启动:
打开浏览器访问
http://IP:8080/,看到登录页面的那一刻——深呼吸,你成功了 🎉配置数据源
Superset 的强大之处在于它几乎"来者不拒"。只要你的服务器装好了对应的数据库驱动,就能接入。
支持的数据库一览
数据库 | PyPI 包 | SQLAlchemy URI 前缀 |
MySQL | pip install mysqlclient | mysql:// |
PostgreSQL | pip install psycopg2 | postgresql+psycopg2:// |
Apache Druid | pip install pydruid | druid:// |
SQL Server | pip install pymssql | mssql:// |
Oracle | pip install cx_Oracle | oracle:// |
Apache Hive | pip install pyhive | hive:// |
Presto | pip install pyhive | presto:// |
BigQuery | pip install pybigquery | bigquery:// |
ClickHouse | pip install sqlalchemy-clickhouse | clickhouse:// |
Snowflake | pip install snowflake-sqlalchemy | snowflake:// |
Amazon Redshift | pip install sqlalchemy-redshift | redshift+psycopg2:// |
Amazon Athena | pip install "PyAthena>1.2.0" | awsathena+rest:// |
Apache Spark SQL | pip install pyhive | jdbc+hive:// |
Apache Impala | pip install impyla | impala:// |
Apache Kylin | pip install kylinpy | kylin:// |
Elasticsearch | pip install elasticsearch-dbapi | elasticsearch+http:// |
Google Sheets | pip install gsheetsdb | gsheets:// |
IBM Db2 | pip install ibm_db_sa | db2+ibm_db:// |
SQLite | 内置 | sqlite:// |
Teradata | pip install sqlalchemy-teradata | teradata:// |
Vertica | pip install sqlalchemy-vertica-python | vertica+vertica_python:// |
SAP HANA | pip install hdbcli sqlalchemy-hana | hana:// |
Exasol | pip install sqlalchemy-exasol | exa+pyodbc:// |
Apache Drill | pip install sqlalchemy-drill | drill+sadrill:// 或 drill+jdbc:// |
配置步骤
安装好驱动后,跟着下面的步骤配置数据源。以 MySQL 为例:
- 登录 Superset 首页,输入管理员用户名和密码

- 进入 Sources → Databases 菜单

- 点击右上角的 + 按钮新增数据源

- 填写数据库名称和 SQLAlchemy URI,点击 Test Connection 验证连接,没问题就保存

- 数据源创建成功 ✅

集成 Druid
Superset 和 Druid 的组合堪称"天作之合"——一个负责展示,一个负责实时聚合。来看看怎么把它们串起来。
安装 Druid 驱动
创建 Druid 集群
- 进入 Sources → Druid Clusters 菜单

- 新建一个集群

- 填入集群配置信息(Cluster 名称随意),点击保存

- 此时集群的元数据显示为 None——别慌,还没刷新呢

- 手动刷新元数据

- 刷新成功后会自动创建对应的 Druid Datasource。如果失败,回头检查配置是否正确

- 回到 Druid Clusters 页面确认

- 元数据已成功加载 🎉

生成图表
数据源就位,接下来就是 Superset 的主场——把数据变成图表。
- 点击菜单栏的 + 新建图表

- 选择数据源和图表类型(默认 Table,也可以选折线图、饼图等),点击 Create

- 进入图表编辑界面,拖拽字段、选择维度和指标

- 编辑完成后点击 Save,可以选择同时添加到 Dashboard

- 进入仪表盘

- 新图表已经出现在仪表盘上了 📊

Superset API
除了在 Web 界面点点点,Superset 还提供了 API 接口。这意味着你可以通过代码动态生成图表、查询数据——自动化的大门就此打开。
API 参数总览
参数名 | 说明 | 类型 |
datasource | 数据源标识 | string |
viz_type | 图表类型(world_map / table / line 等) | string |
granularity_sqla | 时间字段 | string |
time_grain_sqla | 时间粒度 | string |
time_range | 时间范围 | datetime |
entity | 实体字段(不同图表类型取值不同) | string |
adhoc_filters | 筛选条件 | array |
metric / aggregate | 度量 / 聚合方式 | object / string |
row_limit | 返回行数限制 | int |
standalone | 是否独立渲染(嵌入用) | boolean |
height / width | 图表尺寸 | int |
show_bubbles | 地图是否展示气泡 | boolean |
max_bubble_size | 气泡最大尺寸 | int |
Chart API
GET/superset/explore/参数:form_data(JSON 格式)
方式一:嵌入 HTML(适用于固定参数图表)
打开已创建的图表,点击右上角的
<> 按钮,直接复制 HTML 代码嵌入你的项目。简单粗暴,开箱即用。
方式二:API 动态调用(适用于参数化图表)
通过 URL 拼接
form_data JSON 参数,实现动态渲染。以世界地图为例:你也可以在图表编辑界面直接获取完整的 API 地址:

Data API
如果你只想要原始数据,不需要图表渲染,可以调用 SQL Lab 的接口。
POST/superset/sql_json/
请求参数:
返回结果:
进阶玩法: 配合前端框架(React / Vue),你可以用 Data API 拿到原始数据,再用 ECharts 等库做完全自定义的可视化渲染。Superset 负责查询调度和权限管控,前端负责炫酷展示——各司其职,完美配合。
结语
回顾一下这趟旅程:我们从一个空白环境出发,完成了 Superset 的安装部署,接入了关系型数据库和 Druid 实时数据源,生成了可交互的仪表盘,最后还打通了 API 调用链路。
Superset 的魅力在于它的低门槛和高天花板。入门只需要
pip install,但往深了走,你可以做自定义图表插件、对接 Presto/Druid 构建实时大屏、甚至通过 API 搭建数据中台的可视化层。