Superset

Welcome | Superset (apache.org)
https://github.com/apache/superset

— 简介 —

  1. Superset 是一个数据可视化和数据探索平台(数据可视化工具)
  2. Superset 可以取代或增强许多团队的专有商业智能工具
  3. Superset 与各种数据源很好地集成。
数据源支持--github主页截图.png

Superset 提供:

  • no-code interface for building charts quickly

    用于快速构建图表的无代码界面

  • A powerful, web-based SQL Editor for advanced querying

    一个强大的、基于 Web 的 SQL 编辑器,用于高级查询

  • lightweight semantic layer for quickly defining custom dimensions and metrics

    一个轻量级语义层,用于快速定义自定义维度和指标

  • Out of the box support for nearly any SQL database or data engine

    开箱即用,支持几乎所有 SQL 数据库或数据引擎

  • A wide array of beautiful visualizations to showcase your data, ranging from simple bar charts to geospatial visualizations

    各种精美的可视化效果来展示您的数据,范围从简单的条形图到地理空间可视化效果

  • Lightweight, configurable caching layer to help ease database load

    轻量级、可配置的缓存层,有助于减轻数据库负载

  • Highly extensible security roles and authentication options

    高度可扩展的安全角色和身份验证选项

  • An API for programmatic customization

    用于编程定制的 API

  • cloud-native architecture designed from the ground up for scale

    从头开始设计的云原生架构,旨在实现规模化

部署 —

建筑 |超集 — Architecture | Superset (apache.org)

官网提供多种安装方式:Kubernetes、PyPI、Docker Compose、Docker等

1. Docker 部署

https://superset.apache.org/docs/installation/docker-builds

apache/superset - Docker Image | Docker Hub

默认运行地址 http://localhost:8088

默认账号密码:admin

2. Docker Compose 部署

注意:

Quickstart 中官方建议使用 Docker Compose 方式,但这种构建方式不被建议在生产环境中使用

注意1--文档截图.png 注意2--文档截图.png

OS环境依赖:

可参考:使用Docker Compose安装本地安装 | Superset (zhaoweilong.github.io)

要注意 superset 不直接支持 Windows 操作系统,需要使用虚拟机或 WSL + Docker Desktop

win11+docker compose部署尝试

1
2
3
4
5
6
7
# 从官网克隆仓库到本地,进入目录
git clone --depth=1 https://github.com/apache/superset.git
cd superset

# 有几种选项,详见官方文档,这里使用交互式开发环境的方式
# 接着就会部署,如果win缺少环境会装wsl和docker desktop
docker compose up
docker-compose.png

3. PyPI 部署

apache-superset:2.1详细部署流程

目的

  • 项目需求,用于生产的数据分析平台,使用PyPI部署
  • 测试与简单调用可移步docker部署

环境

  • VMware® Workstation 16 Pro
  • ubuntu-20.04.6-desktop-amd64

具体步骤

OS环境配置
  1. 下载 iso 文件(Index of /ubuntu-releases/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

    我这里下的是**/ubuntu-releases/20.04.6/**ubuntu-20.04.6-desktop-amd64.iso

  2. 打开VMware,点击/文件/新建虚拟机

  3. 类型选择典型(推荐),下一步

  4. 选择安装程序光盘映像文件,找到刚才下载的iso文件,下一步

  5. 填写信息(用户名与登录密码等),下一步

  6. 填写信息(虚拟机名称和安装位置),下一步

  7. 磁盘分 20G(仅作项目环境调试不长期使用),存储为单个文件(确保性能但影响不大),下一步

  8. 完成

  9. 选择刚创建的虚拟机,开启

  10. 等待,鼠标移动至窗口可操作,按 CTRL+ALT 快捷键回到主机,输入用户名密码,登入系统

Superset环境配置
  1. 进入系统,全都关掉Skip/Next/Done等弹窗,左上角火狐浏览器,搜索Superset,没连接代理可以用bing,一般是搜索结果第一个,进入官网(欢迎 |超集 — Welcome | Superset (apache.org)), Get Started

  2. 点击左侧栏 /Installation/PyPI,右侧找到 ubuntu20.04 对应的操作系统依赖项下载命令复制

    在 Ubuntu 20.04 中,以下命令将确保安装所需的依赖项:

    1
    sudo apt-get install build-essential libssl-dev libffi-dev python3-dev python3-pip libsasl2-dev libldap2-dev default-libmysqlclient-dev
  3. 粘贴到终端,在终端窗口使用快捷键 CTRL+SHIFT+V,粘贴命令回车运行,结果如下图

Superset环境配置-1.png
  1. 安装python的虚拟环境venv

    1
    pip install virtualenv

    结束出现了一个WARNING,告诉我们需要添加环境变量$PATH(可以使用 echo $PATH命令查看当前环境变量)

Superset环境配置-2.png

可以使用 sudo vi /etc/profile 进入配置文件进行编辑,在文件末尾写入

1
export PATH=$PATH:/home/<用户名>/.local/bin/

(如果vi麻烦就自行下载使用其他编辑器vim nano vsc……,注意保存编辑内容)

输入source /etc/profile载入修改后的配置文件

1
source /etc/profile
Superset环境配置-3.png
  1. 输入virtualenv —version查看到命令已经存在
1
virtualenv --version
Superset环境配置-4.png
  1. 使用 virtualenv superset创建名为superset的python虚拟环境,并使用source命令激活环境
1
2
virtualenv superset
source superset/bin/activate
Superset环境配置-5.png

不喜欢virtualenv也可以使用其他方式构建虚拟环境,也可参考文档

Superset下载安装与初始化
  1. 在刚刚创建的虚拟环境内,输入pip install apache-superset命令正式下载superset,等待结束
1
pip install apache-superset
Superset下载安装与初始化-1.png
  1. 结束后,输入superset db upgrade命令进行初始化
1
superset db upgrade
Superset下载安装与初始化-2.png

发现报错

Superset下载安装与初始化-3.png
  1. 检查发现superset2.x版本不再受支持

Superset 2.x: ‘AttributeError: 模块’flask.json’没有属性’JSONEncoder’’ ·apache/超集 ·讨论 #27211 — Superset 2.x: AttributeError: module 'flask.json' has no attribute 'JSONEncoder' · apache/superset · Discussion #27211 (github.com)

如果更换版本成本太大,尝试了pip python和superset的升级也有一些问题

  1. 还是先根据提示先升级pip
1
pip install —upgrade pip

再次运行superset db upgrade命令可能会出现 TypeError: init() got an unexpected keyword argument ‘unbound_message’是apache-superset 2.1的bug,需要降级flask,使用下面的命令:

1
2
3
python -m pip uninstall -y Flask

python -m pip install Flask==2.0.3
Superset下载安装与初始化-4.png
  1. 发现在终端输入superset是有输出的,但是需要设置一个FLASK_APP的环境变量
Superset下载安装与初始化-5.png

终端输入export FLASK_APP=superset

1
2
# 关闭终端就没有了后面添加到/etc/profile
export FLASK_APP=superset

再次运行superset db upgrade

1
superset db upgrade
Superset下载安装与初始化-6.png
  1. 看文档还要进行初始化配置
Superset下载安装与初始化-7.png

翻译:注意,对于Superset的生产实例,有些配置是强制性的。特别地,如果没有用户指定的SECRET_KEY值,Superset将不会启动。请参考配置Superset

上面爆不安全的SECRET_KEY也是之前找问题输入了一句export SUPERSET_SECRET_KEY=“123456”

而找到~/superset/lib/pytohn3.8/site-packages/superset目录下的config.py配置文件可以发现,配置里就是SECRET_KEY调环境变量的SUPERSET_SECRET_KEY

Superset下载安装与初始化-8.png

文档里面的注释建议用openssl rand -base64 42那就在终端中用该命令生成一个随机密钥再赋值给SUPERSET_SECRET_KEY

1
2
3
4
5
SUPERSET_SECRET_KEY="$(openssl rand -base64 42)"
echo $SUPERSET_SECRET_KEY

# 将刚刚生成的密钥具体值添加到/etc/profile
export SUPERSET_SECRET_KEY="ACB7Zwwns6bG2……"
Superset下载安装与初始化-9.png
  1. 执行superset db upgrade命令,遇到模块缺失问题就pip install安装,或者重装
1
2
# 这里装了一个marshmallow_enum
pip install marshmallow_enum
Superset下载安装与初始化-10.png
  1. 最后在执行superset db upgrade命令,成功
  2. 接着根据官网文档依次执行后面的命令
1
2
3
4
5
6
7
8
9
10
11
12
13
export FLASK_APP=superset #上面应该执行过了

# 创建管理员用户,不输入默认就是[ ]中的内容,密码输入不可见
superset fab create-admin # 输错了CTRL+C中断重新执行该命令

# 下载一些样例数据,应该是要开代理连接的
superset load_examples

# 创建默认角色和权限
superset init

# 在端口 8088 上启动 Web 服务器,使用 -p 绑定端口
superset run -p 8088 --with-threads --reload --debugger
  1. 如果一切正常,打开浏览器,网址栏进入8088端口就能见到界面了,输入之前创建的管理员用户[admin]和密码
1
localhost:8088
Superset下载安装与初始化-11.png

成功进入(因为没改代理跳过了superset load_examples一步所以主菜单没显示样例数据)

Superset下载安装与初始化-12.png
  1. 到此,apache-superset:2.1 PyPI 部署完成

参考材料 —