superset安装文档

1、Superset安装步骤

superset官网 http://superset.apache.org/

superset对于python有版本要求,最好是最新版的python,因此需要安装python虚拟环境,方面部署。

superset有window安装方法,Linux的虚拟python环境安装方法,以及Linux的docker安装方法,一下为Linux虚拟python环境安装docker的方法

1.1 superset安装步骤

安装superset的完全步骤如下:

安装miniconda->在miniconda中为superset创建python虚拟环境->安装superset

安装过程需要全程联网

2、安装Miniconda

为什么不用anaconda或者是conda?

因为anaconda环境内容较多,安装superset不需要较多工具

下载Miniconda(Python3版本)的地址为:https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh

按照以下命令进行安装,根据提示进行操作完成安装

拉取安装脚本

1
bash Miniconda3-latest-Linux-x86_64.sh 

在一开始阅读协议的时候可以按空格键快速阅读

笔者在使用命令安装时的安装miniconda地址为

1
/opt/module/miniconda3

加载配置

加载环境变量配置文件,使之生效

1
source ~/.bashrc

Miniconda安装完成后,每次打开终端都会激活其默认的base环境,我们可通过以下命令,禁止激活默认base环境。

1
conda config --set auto_activate_base false

3、创建python 3.10.4环境

配置conda镜像

1
2
3
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
conda config --set show_channel_urls yes

创建python环境

1
conda create --name superset python=3.10.4

conda环境管理常用命令

1
2
3
创建环境:conda create -n env_name
查看所有环境:conda info --envs
删除一个环境:conda remove -n env_name --all

激活环境

1
conda activate superset

如果想退出当前环境,使用如下命令

1
conda deactivate

4、安装superset

安装依赖

1
sudo yum install -y gcc gcc-c++ libffi-devel python-devel python-pip python-wheel python-setuptools openssl-devel cyrus-sasl-devel openldap-devel

安装(更新)setuptools和pip

1
pip install --upgrade setuptools pip -i https://pypi.douban.com/simple/

安装superset

1
pip install apache-superset -i https://pypi.douban.com/simple/

说明:-i的作用是指定镜像,这里选择国内镜像
注:如果遇到网络错误导致不能下载,可尝试更换镜像

1
pip install apache-superset --trusted-host https://repo.huaweicloud.com -i https://repo.huaweicloud.com/repository/pypi/simple

初始化Supetset数据库

1
superset db upgrade

创建管理员账户

1
2
3
export FLASK_APP=superset
superset fab create-admin
superset init

修改密码

1
superset fab reset-password --username admin --password 123456

username后面需要改成你想修改的用户的用户名,不需要修改

password后面为后续想改成的密码

修改完成后需要执行

1
superset init

重启

5、启动superset

安装gunicorn

1
pip install gunicorn -i https://pypi.douban.com/simple/

说明:gunicorn是一个Python Web Server,可以和java中的TomCat类比

启动Superset
首先确保当前conda环境为superset,及下图所示

https://pic.imgdb.cn/item/649d24da1ddac507cc198c90.jpg

启动

1
gunicorn --workers 5 --timeout 120 --bind 172.16.150.14:5000  "superset.app:create_app()" --daemon 

说明:
–workers:指定进程个数,python脚本语言没有线程概念
–timeout:worker进程超时时间,超时会自动重启
–bind:绑定本机地址,即为Superset访问地址
–daemon:后台运行

需要保证后续可以登录,需要保证防火墙关闭(不推荐)或者是开启端口并且重启防火墙

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 重启防火墙
firewall-cmd --reload
# 开启防火墙
systemctl start firewalld
# 关闭防火墙
systemctl stop firewalld
# 防火墙版本
firewall-cmd --version
# 防火墙状态
systemctl status firewalld
firewall-cmd --query-port=80/tcp
firewall-cmd --permanent --list-ports
firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --permanent --add-port=8083-8085/tcp
firewall-cmd --permanent --remove-port=8083-8085/tcp

6、遇到的问题以及解决

报错1
1
2
3
4
(superset) [hyj@hadoop102 ~]$ superset db upgrade
#然后包这些错误
from markupsafe import soft_unicode
ImportError: cannot import name 'soft_unicode' from 'markupsafe' (/opt/module/miniconda3/envs/superset/lib/python3.7/site-packages/markupsafe/__init__.py)

解决方法

1
2
3
4
5
6
#查看markupsafe这个包是否存在
(superset) [hyj@hadoop102 ~]$ pip show markupsafe
Name: MarkupSafe
Version: 2.1.2
#下载2.0.1版本的markupsafe (pip会帮我们卸载之前版本的并下载2.0.1版本的markupsafe)
(superset) [hyj@hadoop102 ~]$ pip install markupsafe==2.0.1
报错2
1
2
3
4
(superset) [hyj@hadoop102 ~]$ superset db upgrade
#但是会报这个错误
re.compile(r"'(''|\\\\|\\|[^'])*'", sqlparse.keywords.FLAGS).match,
AttributeError: module 'sqlparse.keywords' has no attribute 'FLAGS'

解决方法

1
pip install sqlparse=='0.4.3'
报错3
1
2
3
4
superset db upgrade
#报错
Error: Could not locate a Flask application.
You did not provide the "FLASK_APP" environment variable, and a "wsgi.py" or "app.py" module was not found in the current directory.

解决方法

1
export FLASK_APP=superset
报错4
1
2
3
4
5
6
7
8
9
10
11
superset db upgrade
#但是遇到如下问题
--------------------------------------------------------------------------------
WARNING
--------------------------------------------------------------------------------
A Default SECRET_KEY was detected, please use superset_config.py to override it.
Use a strong complex alphanumeric string and use a tool to help you generate
a sufficiently random sequence, ex: openssl rand -base64 42
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
Refusing to start due to insecure SECRET_KEY

解决方法

进入到miniconda3的安装路径下的envs/superset/lib/python+版本号/目录

1
(superset) [hyj@hadoop102 ~]$ cd /opt/module/miniconda3/envs/superset/lib/python3.8/

创建superset_config.py

1
vim superset_config.py

添加如下行为

1
2
3
4
5
SECRET_KEY = "ZT2uRVAMPKpVkHM/QA1QiQlMuUgAi7LLo160AHA99aihEjp03m1HR6Kg" 
用命令 openssl rand -base64 42 来生成一个强密钥
openssl rand -base64 42
4xPjBius42o5Y/pbgRmkjKZ3im5CeHcRXM93TWm+FboEJOll0XMMgDRW
所以SECRET_KEY =“4xPjBius42o5Y/pbgRmkjKZ3im5CeHcRXM93TWm+FboEJOll0XMMgDRW”
报错5

yum命令无法查找到镜像mirror,下载不了文件的问题

解决

要么配置本地源(不推荐),要么网络拉取镜像源(推荐),下面有网络拉取镜像源的步骤

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#安装wget工具
yum intall -y wget
#转到yum源文件存放路径
cd /etc/yum.repos.d/
#创建一个网络yum源文件备份
tar zcf backup_repo.tar.gz *
#删除所有yum源文件
rm -rf CentOS*
#下载yum源文件
wget http://mirrors.aliyun.com/repo/Centos-7.repo
#清除缓存
yum clean all
#重新搭载yum源
yum makecache

登录

访问http://hadoop102:5000,并使用之前安装superset过程中设置的用户名密码登录

停止superset

如果想要停止superset则使用如下命令

1
ps -ef | awk '/superset/ && !/awk/{print $2}' | xargs kill -9

使用superset启停脚本进行项目的启停

其中IP地址和端口需要根据实际情况进行更改

1
vim superset.sh

内容如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#!/bin/bash

superset_status(){
result=`ps -ef | awk '/gunicorn/ && !/awk/{print $2}' | wc -l`
if [[ $result -eq 0 ]]; then
return 0
else
return 1
fi
}
superset_start(){
source ~/.bashrc
superset_status >/dev/null 2>&1
if [[ $? -eq 0 ]]; then
conda activate superset ; gunicorn --workers 5 --timeout 120 --bind IP地址:端口 --daemon 'superset.app:create_app()'
else
echo "superset正在运行"
fi

}

superset_stop(){
superset_status >/dev/null 2>&1
if [[ $? -eq 0 ]]; then
echo "superset未在运行"
else
ps -ef | awk '/gunicorn/ && !/awk/{print $2}' | xargs kill -9
fi
}


case $1 in
start )
echo "启动Superset"
superset_start
;;
stop )
echo "停止Superset"
superset_stop
;;
restart )
echo "重启Superset"
superset_stop
superset_start
;;
status )
superset_status >/dev/null 2>&1
if [[ $? -eq 0 ]]; then
echo "superset未在运行"
else
echo "superset正在运行"
fi
esac

加执行权限

1
chmod +x superset.sh

怎么使用这些指令

1
2
3
4
5
6
# 启动superset
superset.sh start
# 停止superset
superset.sh stop
# 重启superset
superset.sh restart

自助分析平台使用教程

自助分析平台自身使用软件自带的sqlite软件对于信息进行存储
应用效果如图所示

其中主要部分用于展示自制的页面列表,自助分析平台有如下几个重要的组成元素:

  • 仪表盘(dashboard)
  • 各种数据图形(chart)
  • 数据集(dataset)
  • 数据源(database)

而创建一个完整的图表过程下所示

1、配置展示的数据源

点击右上角setting,在下拉框列表中勾选database connection

再点击

可以添加数据源,填写好配置后既可使用该数据源拿取数据

2、创建页面

在主页中点击 添加database,即可添加新页面

创建页面的页面效果如图所示

其中charts为可以用于填充页面的图表,需要自己制作,layout elements是布局元素,可以添加一定的预设填充页面,比如一部分markdown编辑组件,规定自制图表大小和位置的页面结构

如果没有图表,需要自己创作

3、创建图表

点击任何和图标相关的信息即可跳转到创建图表页面

分为两步,第一步选择数据集,第二步为选择图表样式

3.1创建数据集

点击add a dataset后可以跳转到安装数据源的页面,这个功能的意思就是从设置的数据源中拿到一张表,作为一个数据源

点击dataset,会让你从已经设置的数据源中选择一个作为数据源,

schema则为让你在选择的数据源中选择一个schema,

选择完成后会产生新的下拉框选项

即为选择相应的表

选择后点击右下角的 create dataset and create chart,即为创建完成

3.2选择图表

4、编辑图表

编辑图表界面如图所示

主要的部分为1、2、3、4共4各部分,其中

1为图表名称

2为数据集的信息展示,对于此部分了解的人员可以隐藏不看该部分

3为确认横坐标和纵坐标的信息

time与横坐标信息强绑定了,如果使用时间顺序折线图的话,必须从表中选择时间类型的属性作为横坐标,其中

time column为选择哪一个数据集中的属性作为x轴

time grain为单位,是哪一个时间维度作为单位

time range为查询的时间跨度是多少,可以不过滤

Query为y轴部分

METRIC可以用于选择哪一个数据集中的属性作为y轴信息,以及这个字段中数据以什么样的聚合函数形式展示,比如平均,还是求和,还是极值

FILTERS可以用于作为过滤条件,即对于数据进行条件判断,适合条件的才会做处理

第4部分为数据的可视化展示

处理完成后即可进行保存

值得注意的是,目前自主分析平台可以制作多种图表,已经可以满足各种类型图表的制作

5、填充页面并保存

再次回到页面编辑界面,此时我们已经有了数个图表

右侧为已经创建的图表,使用鼠标拖拽即可将图标移动到网页上

5.1改变图表大小

鼠标移动到图表的右侧或者下侧时,鼠标会变成特殊符号,此时按住鼠标进行拖拽即可改变图表大小

5.2各种布局元素的使用

除了自制图表,自助分析平台会提供6种预设布局元素,以供使用

从上到下的功能依次为

tabs: 将其放置于页面上时会创建一行信息,这行中可以创建多个sheet页,每一页可以填充不同的图表,每一个sheet页均可命名

row:可以创建一行空行,通常与column元素一起使用,达到一行中有多层的效果

Header:在页面上为单独一行,可以作为标题行使用

text:一块页面组件,大小初始默认和自制的图表大致相同,但是里面可以填充markdown语法,并且可以分别展示代码形式和预览形式

divider:在页面中以一条直线展示,可以作为分隔符使用

编辑完成后点击右上角的save按键,即可保存页面效果

有一点需要注意的,成型的页面只会默认创建页面的时候拉取一次数据并展示,后期不会主动拉取数据进行分析展示,如果想要展示,则需要右上角的…,除了可以点击refresh dashboard进行一次手动刷新数据外,可以点击set auto-fresh interval按键选择自动刷新的时间间隔,选择哪一个可以根据业务需求