Superset 是一款由 Airbnb 开源的“现代化的企业级 BI(商业智能) Web 应用程序”,其通过创建和分享 dashboard,为数据分析提供了轻量级的数据查询和可视化方案。
Superset 的前端主要用到了 React 和 NVD3/D3,而后端则基于 Python 的 Flask 框架和 Pandas、SQLAlchemy 等依赖库,主要提供了这几方面的功能:
- 集成数据查询功能,支持多种数据库,包括 MySQL、PostgresSQL、Oracle、SQL Server、SQLite、SparkSQL 等,并深度支持 Druid。
- 通过 NVD3/D3 预定义了多种可视化图表,满足大部分的数据展示功能。如果还有其他需求,也可以自开发更多的图表类型,或者嵌入其他的 JavaScript 图表库(如 HighCharts、ECharts)。
- 提供细粒度安全模型,可以在功能层面和数据层面进行访问控制。支持多种鉴权方式(如数据库、OpenID、LDAP、OAuth、REMOTE_USER 等)。
下面操作均在ubuntu18下完成。
▌1. 拉取项目
// 创建目录用于存放项目
mkdir -p /root/superset
cd /root/superset
git clone https://github.com/amancevice/superset.git
▌2. 配置数据库
进入项目目录
cd /root/superset/superset
新建superset_config.py
文件, 修改相应的配置信息
ROW_LIMIT = 5000
SUPERSET_WEBSERVER_PORT = 8088
SECRET_KEY = 'set_your_own_key'
SQLALCHEMY_DATABASE_URI = 'mysql://user:[email protected]:port/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 = ''
▌3. 启动容器
docker run -d --name superset_name --env SECRET_KEY="set_your_own_key" --env SQLALCHEMY_DATABASE_URI="mysql://user:[email protected]:port/db" -p 8088:8088 -v /root/superset/superset/superset_config.py amancevice/superset
注意:
- -v 挂载配置文件必须挂载到容器的/root/superset/superset/superset_config.py或者自定义目录
- SECRET_KEY必须与superset_config.py的设置一致
- 填写你自己数据库连接信息
▌4. 初始化容器
//进入superset-init文件目录
cd /mnt/superset/superset/superset
//初始化
docker exec -it superset_name superset-init
//输入你设置登录superset前端的admin相关信息
Username [admin]: admin
User first name [admin]: bing
User last name [user]: bing
password: mypassword
repeat passwd: mypassword
//输入完毕开始初始化,等待完成即可
▌5. 前端访问
http://ip:8088/