前提
- 仅供参考
介绍
superset是一个现代数据分析、可视化平台、企业级商业智能(BI)web应用。
superset是以Python + Flask + React + Redux + SQLAlchemy 技术为主的项目架构。
环境准备
以下的所有操作基于superset 1.3.0版本为例,
- 后端环境推荐:
python3.7或3.8
- 可使用
pyenv等python版本管理工具来安装 win系统安装pyenv,可用choco install pyenv-win安装(免环境变量配置等其他问题)- 相关
python库在线安装不了的,建议离线安装 - 推荐在项目目录创建虚拟环境目录
- 如果提示
pip需要升级,可升
- 前端推荐
node ^14.15.5、npm ^7.5.4
node自带对应的npm- 可使用
nvm或n等版本管理工具来安装node
win系统
- 可能缺少常用
c++库,自行下载安装
使用 pip 安装软件时,会比较慢,可以设置 pip 为国镜像:
- 清华镜像:
https://pypi.tuna.tsinghua.edu.cn/simple/ - 阿里云镜像:
https://mirrors.aliyun.com/pypi/simple/ - 豆瓣镜像:
http://pypi.douban.com/simple/ - 中科大镜像:
https://pypi.mirrors.ustc.edu.cn/simple/ - 官方镜像
https://pypi.org/simple
以下直接设置 pip 清华镜像为全局配置:
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
# 设置全局环境
pip install -i https://pypi.doubanio.com/simple/ flask
# 设置临时源
mysql数据库
pip install mysql-connector-python
# 由于新版mysql8的升级,可使用这个驱动
pip install mysqlclient
# 低于mysql8的可使用这个驱动
其他数据库驱动点击此处
使用docker安装并运行
- 安装
docker工具 - 拉取
superset镜像,你可以执行镜像版本
docker pull apache/superset # 拉取镜像
docker run -d -p 8080:8088 --name superset apache/superset
# 启动镜像并映射到主机 8080的端口
- 初始化
Superset实例
# 设置本地superset系统管理员账户
$ docker exec -it superset superset fab create-admin \
--username admin \
--firstname Superset \
--lastname Admin \
--email admin@superset.com \
--password admin
# 将本地数据库迁移到最新版本
$ docker exec -it superset superset db upgrade
# 加载例子(可忽略,慢需要翻墙)
$ docker exec -it superset superset load_examples
# 初始化设置角色
$ docker exec -it superset superset init
# 登录账号:[admin/admin]
http://localhost:8080/login/
此 docker 映像仅包含基本 Superset 构建,不包括您需要连接到分析数据库的数据库驱动程序(MySQL、Postgres、BigQuery、Snowflake、Redshift 等)。这是故意的,因为其中许多驱动程序没有 Apache-兼容许可证,我们不希望使用环境中不需要的软件包来膨胀镜像
基于上面镜像编写一个简单的 Dockerfile 文件,重新构建镜像
FROM apache/superset
# 切到root用户安装需要的软件
USER root
RUN apt-get update
# 安装vi
RUN apt-get install vim -y
# 切回 superset 用户
USER superset
启动容器后,进入容器,找到文件,修改数据库连接,重启容器,重新初始化Superset实例
# 进入容器
docker exec -it superset bash
# 文件superset\config.py:
#SQLALCHEMY_DATABASE_URI = "sqlite:///" + os.path.join(DATA_DIR, "superset.db")
SQLALCHEMY_DATABASE_URI = 'mysql+mysqlconnector://root:root@10.34.23.17:3306/mydatabase'
使用python来安装
pip install apache-superset
# 安装apache-superset工具
之后就是初始化superset实例并运行。
使用源码运行
您已安装好python3.7 或 3.8环境,以及需要的其他环境工具
git clone https://github.com/apache/superset.git
# 克隆项目
cd superset
# 进入项目
virtualenv env
# 利用`virtualenv`等工具在项目目录创建虚拟环境
env\\Scripts\\activate
#win-激活环境cmd
source env/Scripts/activate
# 激活环境, linux的Scripts可能需要改为 bin
deactivate
#退出虚拟环境
pip install -r requirements/base.txt
# 安装项目依赖base
pip install -r requirements/development.txt
# 安装开发所需依赖
pip install -e .
# #安装 superset 开发者模式
以上的python依赖可离线安装,如果慢请更换指定的源 如: pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pillow
更换数据库链接
由于默认使用的是自带本地文件数据库,因此我们需要指定自己的数据库, 进入superset\config.py文件,修改数据库链接,
请安装指定的数据库驱动,如mysql的驱动 pip install mysql-connector-python 或 pip install mysqlclient
# SQLALCHEMY_DATABASE_URI = "sqlite:///" + os.path.join(DATA_DIR, "superset.db")
SQLALCHEMY_DATABASE_URI = 'mysql+mysqlconnector://root:root@10.34.23.17:3306/mydatabase'
初始化superset实例
# 设置本地superset系统管理员账户
$ docker exec -it superset superset fab create-admin \
--username admin \
--firstname Superset \
--lastname Admin \
--email admin@superset.com \
--password admin
# 将本地数据库迁移到最新版本
$ docker exec -it superset superset db upgrade
# 加载例子(可忽略,慢需要翻墙)
$ docker exec -it superset superset load_examples
# 初始化设置角色
$ docker exec -it superset superset init
# 登录账号:[admin/admin]
http://localhost:8080/login/
# 要在端口8088上启动开发web服务器,请使用-p绑定到另一个端口
superset run -h 0.0.0.0 -p 8088 --with-threads --reload --debugger
如果此时你修改了python的源代码,需要重新执行pip install -e .,并重启才生效
前端项目命令
进入项目的前端文件目录superset-frontend
npm i
#安装依赖
npm run dev
#启动开发会产生新的superset/static 前端文件
npm run prod
#构建生产,会生成前端文件
安装完后,修改superset\superset-frontend\webpack.config.js,将原来的jsx 的这块类似语句改为下面的
注意啊,一定要改,否则编译不通过,尤其注意path.resolve(__dirname, './src')这句
{
test: /\.jsx?$/,
// include source code for plugins, but exclude node_modules and test files within them
exclude: [/superset-ui.*\/node_modules\//, /\.test.jsx?$/],
include: [
new RegExp(`${APP_DIR}/src`),
/superset-ui.*\/src/,
new RegExp(`${APP_DIR}/.storybook`),
/@encodable/,
path.resolve(__dirname, './src'),
],
use: [babelLoader],
},
问题
- 安装
python_geohash包失败, 到www.lfd.uci.edu/~gohlke/pyt…下载对应版本的包
pip install E:\\python_geohash-0.8.5-cp38-cp38-win_amd64.whl
# 38对应python3.8 其他类推
- 依赖慢
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pillow
# 指定清华源来安装
- 数据库中文乱码问题
- 链接参数增加中文
charset=utf8
- 前端报
"export 'FeatureFlagMap' was not found in '@superset-ui/core'等- 前端编译报警告,直接不用理会,代码依旧可运行
- 缓存问题
- 有时发现页面不变化,把登录过帐号的
session等本地缓存清除掉,再试
- 有时发现页面不变化,把登录过帐号的