Apache Superset有多种代码构建方式,虽然官方推荐使用docker-compose的方式进行环境搭建,但本文从开发者的角度出发,使用前后端分离开发的模式,直接使用flask server和webpack的方式构建前后端开发环境。
01.操作系统及开发工具
- 操作系统:MacBook MacOS Sequoia 15.6
- 开发工具:Cursor、Trae、VS Code等
*开发工具可根据自己习惯选择Python开发环境,本文使用Cursor
02.基础环境安装
Apache Superset 4.x所依赖的基础环境包含Python3.10及以上、Node.js 20及以上.
2.1 Python环境安装
安装miniconda环境
#官网下载并自主安装miniconda
创建superset python环境
# 创建superset Python运行环境,版本3.10
conda create -n superset python=3.10
使用superset python环境
# 进入superset的python环境
conda activate superset
2.2 安装Node.js环境
安装Node.js
# 自主官网下载安装
查看Node.js版本
# 查看node版本,要求20以上,如果已经安装过低版本,自行升级到20以上
node -v
03.代码构建
3.1 克隆代码
git clone https://github.com/apache/superset.git
3.2 构建后端代码
安装python包
# 进入到superset根目录,执行下列命令
pip install -r requirements/development.txt
以可编辑(开发)模式安装Superset
# 该模式会创建代码连接,修改代码后不需要再次安装,但需重启服务。
pip install -e .
初始化数据库
# 默认会初始化自带的sqlite数据库,如果需要改成MySQL或者Pg需要设置环境变量SQLALCHEMY_DATABASE_URI为相应的数据库,后续文章会写
# 默认设置在superset/config.py中
# SQLALCHEMY_DATABASE_URI = (
# f"""sqlite:///{os.path.join(DATA_DIR, "superset.db")}?check_same_thread=false"""
# )
superset db upgrade
创建管理员用户
# 创建管理员用户(会让你输入用户名和密码)
superset fab create-admin
创建默认的角色和权限
# 创建默认的角色和权限
superset init
加载样例数据
superset load-examples
启动Flask后端服务器
# 启动 Flask 开发 Web 服务器
# 该服务是唯一的核心后端服务,superset其他的可选服务(websocket、Celery等)可暂不启动,需要异步查询、缓存、定时等功能时才需要。
superset run -p 8088 --with-threads --reload --debugger --debug
3.3 构建前端代码
进入前端代码目录
# 从仓库的根目录
cd superset-frontend
安装前端依赖包
# 安装 `package-lock.json` 中的依赖项
# 安装过程就算设置了国内镜像也比较慢,我花了1个小时才完成
npm ci
启动Dev Server
# 启动完成后,访问http://localhost:9000/打开前端的页面
# Dev Server会自动代理到后端的http://localhost:8088进行接口访问
npm run dev-server
04.本地调试
打开本地的Superset
输入之前创建的管理员用户和密码
成功进入,则表示整个环境已经设置成功,可直接修改前后端的代码,会自动编译构建。后续文章会介绍具体的修改方法,敬请关注!