文章目录
简介
Apache Superset 是一个现代化的、企业就绪的商业智能 Web 应用程序。它 快速、轻量级、直观,并加载了各种选项,使所有技能的用户都可以轻松使用 用于探索和可视化其数据的集合,从简单的饼图到高度详细的 deck.gl
地理空间图表。
Superset 的前端主要用到了 React
和 NVD3/D3
,而后端则基于 Python 的 Flask 框架和 Pandas、SQLAlchemy 等依赖库,主要提供了这几方面的功能:
-
直观的界面,用于可视化数据集和制作交互式仪表板
-
各种精美的可视化效果来展示您的数据
-
用于提取和呈现数据集的无代码可视化构建器
-
用于准备可视化数据的世界级 SQL IDE,包括丰富的元数据浏览器
-
轻量级语义层,使数据分析人员能够快速定义自定义维度和指标
-
对大多数 SQL 数据库的开箱即用支持
-
无缝的内存中异步缓存和查询
-
一种可扩展的安全模型,允许配置非常复杂的规则,以确定谁可以访问哪些产品功能和数据集
-
与主要身份验证后端(数据库、OpenID、LDAP、OAuth、REMOTE_USER等)集成
-
添加自定义可视化插件的能力
-
用于编程自定义的 API
-
专为扩展而设计的云原生架构
Superset也是云原生的,因为它很灵活,允许您选择:
-
Web服务器(Gunicorn,Nginx,Apache),
-
元数据数据库引擎(MySQL,Postgres,MariaDB等),
-
消息队列(Redis,RabbitMQ,SQS等),
-
结果后端(S3,Redis,Memcached等),
-
缓存层(Memcached,Redis等),
Superset还可以与NewRelic,StatsD和DataDog等服务很好地配合使用,并且能够运行。 针对最常用数据库技术的分析工作负载。
配置Python环境
Superset是由Python语言编写的Web应用,要求Python3.6的环境
如果不配置环境,直接使用最新的3.10版本会出现如下错误:
1. 安装Miniconda
conda是一个开源的包、环境管理器,可以用于在同一个机器上安装不同Python版本的软件包及其依赖,并能够在不同的Python环境之间切换,Anaconda包括Conda、Python以及一大堆安装好的工具包,比如:numpy、pandas等,Miniconda包括Conda、Python
1.1 下载Miniconda(Python3版本)
下载地址:https://repo.anaconda.com/miniconda/
根据系统环境,选择 Miniconda3-latest-Linux-x86_64.sh
1.2 安装Miniconda
执行以下命令进行安装,并按照提示操作,直到安装完成
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
在安装过程中,出现以下提示时,可以指定安装路径
出现以下字样,即为安装完成
1.3 配置环境变量
运行如下命令:
export CONDA_HOME=/root/allen/miniconda3
export PATH=$PATH:$CONDA_HOME/bin
重启一下虚拟机。
1.4 取消激活base环境
Miniconda安装完成后,每次打开终端都会激活其默认的base环境,我们可通过以下命令,禁止激活默认base环境
如果不关闭,就会自动激活base环境
conda config --set auto_activate_base false
2. 创建Python3.6环境
2.1 配置conda国内镜像
conda config --add channels http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
conda config --add channels http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
conda config --set show_channel_urls yes
查看下 .condarc
文件,是否是如下配置
cat ~/.condarc
输出内容如下:
auto_activate_base: false
channels:
- http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
- defaults
show_channel_urls: true
2.2 创建Python3.6环境
conda create -n superset python=3.6
conda环境管理常用命令,其中的name是环境名称
conda create -n env_name #创建环境 conda info --envs #查看所有环境 conda remove -n env_name --all #删除一个环境
2.3 激活superset环境
激活环境:
conda activate superset
激活后效果如下图所示:
退出环境:
conda deactivate
2.4 执行 python
命令查看python版本
安装Superset
1. 安装依赖
sudo apt install build-essential libssl-dev libffi-dev python3-dev python3-pip libsasl2-dev libldap2-dev default-libmysqlclient-dev
2. Python虚拟环境
官方流程中有这一步,可以省略,前面已经通过Miniconda创建了虚拟环境
apt install python3-venv
pip install virtualenv
创建和激活虚拟环境
python3 -m venv venv
. venv/bin/activate
3. 安装
3.1 安装(更新)setuptools和pip
pip install --upgrade setuptools pip -i https://pypi.douban.com/simple/
-i
的作用是指定镜像,这里选择国内镜像
3.2 安装Superset
pip install apache-superset -i https://pypi.douban.com/simple/
安装成功:
4. 初始化数据库
superset db upgrade
这边是个大坑,可以参考下面的错误提示:
错误提示1:
ImportError: cannot import name '_ColumnEntity'
执行以下安装:
pip install sqlalchemy==1.3.24
错误提示2:
ModuleNotFoundError: No module named 'dataclasses'
执行以下安装:
pip install dataclasses
错误提示3:
ModuleNotFoundError: No module named 'cryptography.hazmat.backends.openssl.x509'
执行以下安装:
pip install cryptography==2.5
错误提示4:
INFO:superset.utils.screenshots:No PIL installation found
执行以下安装:
pip install pillow
错误提示5:
/root/venv/lib/python3.6/site-packages/flask_caching/__init__.py:202: UserWarning: Flask-Caching: CACHE_TYPE is set to null, caching is effectively disabled.
"Flask-Caching: CACHE_TYPE is set to null, "
根据上面的路径,修改python3.6/site-packages/superset/config.py
:
THUMBNAIL_CACHE_CONFIG: CacheConfig = {"CACHE_TYPE": "null"}
修改为
THUMBNAIL_CACHE_CONFIG: CacheConfig = {"CACHE_TYPE": "null", "CACHE_NO_NULL_WARNING": True}
CACHE_CONFIG: CacheConfig = {"CACHE_TYPE": "null"}
TABLE_NAMES_CACHE_CONFIG: CacheConfig = {"CACHE_TYPE": "null"}
修改为
CACHE_CONFIG: CacheConfig = {"CACHE_TYPE": "simple"}
TABLE_NAMES_CACHE_CONFIG: CacheConfig = {"CACHE_TYPE": "simple"}
如果你遇到其他错误,在网上查一下还是能够轻松解决的。
5. 创建管理员用户
给superset创建管理员用户,分别执行下面命令:
export FLASK_APP=superset
superset fab create-admin
设置用户名与密码,其他的可以不用设置,直接 enter
就行
flask是一个python web框架,Superset使用的就是flask
6. 初始化
superset load_examples #可选,加载一些示例
superset init
启动Superset
运行以下命令:
superset run -p 8088 --with-threads --reload --debugger
配置反向代理
简单的模版:
server {
listen 80;
listen [::]:80;
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_pass http://localhost:8088/;
}
}
访问
对接数据库
Superset默认使用sqllite。还支持其他数据库,参考Install Database Drivers
最后
这个安装Superset就完成了。
这个程序的安装复杂程度超出了我的想象,容我再重新理一下,再来分享一下使用细节。