从零开始玩转 Apache Superse

Words 2255Read Time 6 min
2026-2-11
cover
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 为例:
  1. 登录 Superset 首页,输入管理员用户名和密码
    1. superset1
  1. 进入 Sources → Databases 菜单
    1. superset2
  1. 点击右上角的 + 按钮新增数据源
    1. 增加数据源
  1. 填写数据库名称和 SQLAlchemy URI,点击 Test Connection 验证连接,没问题就保存
    1. 增加数据源
  1. 数据源创建成功 ✅
    1. 创建成功

集成 Druid

Superset 和 Druid 的组合堪称"天作之合"——一个负责展示,一个负责实时聚合。来看看怎么把它们串起来。

安装 Druid 驱动

创建 Druid 集群

  1. 进入 Sources → Druid Clusters 菜单
    1. Druid集群
  1. 新建一个集群
    1. Druid集群
  1. 填入集群配置信息(Cluster 名称随意),点击保存
    1. Druid集群
  1. 此时集群的元数据显示为 None——别慌,还没刷新呢
    1. Druid集群
  1. 手动刷新元数据
    1. Druid集群
  1. 刷新成功后会自动创建对应的 Druid Datasource。如果失败,回头检查配置是否正确
    1. Druid集群
  1. 回到 Druid Clusters 页面确认
    1. Druid集群
  1. 元数据已成功加载 🎉
    1. Druid集群

生成图表

数据源就位,接下来就是 Superset 的主场——把数据变成图表
  1. 点击菜单栏的 + 新建图表
    1. 生成图表
  1. 选择数据源和图表类型(默认 Table,也可以选折线图、饼图等),点击 Create
    1. 生成图表
  1. 进入图表编辑界面,拖拽字段、选择维度和指标
    1. 生成图表
  1. 编辑完成后点击 Save,可以选择同时添加到 Dashboard
    1. 生成图表
  1. 进入仪表盘
    1. 生成图表
  1. 新图表已经出现在仪表盘上了 📊
    1. 生成图表

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

方式二: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 搭建数据中台的可视化层。
Loading...