写在前面:本文章是根据尚硅谷的Superset教程改的,按照尚硅谷的教程有些代码行不通,通过查阅多方资料,最终搭建出一个可运行的Superset环境。
安装Miniconda
在linux中输入以下命令,开始安装Miniconda
bash Miniconda3-latest-Linux-x86_64.sh
随后会有让你选择安装位置,自己输入路径就好
接着 设置不自动开启 conda,不设置的话,开启虚拟机就自动进到conda环境里了
conda config --set auto_activate_base false
在conda里面,输入一下命令创建Python3.6环境
conda create -n superset python=3.6
切换到 Python3.6的 环境
conda activate superset
配置下载源
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
至此,配置superset的虚拟环境就完成一半了
在Python3.6环境里安装Superset
下载依赖
此时的命令都要在Python3.6环境(上一步创建的那个)里运行
yum install gcc gcc-c++ libffi-devel python-devel python-pip python-wheel python-setuptools openssl-devel cyrus-sasl-devel openldap-devel
更新setuptools pip包
pip install --upgrade setuptools pip -i https://repo.huaweicloud.com/repository/pypi/simple
安装 Supetset
这里指定Superset的版本为0.38.1
pip install apache-superset==0.38.1 -i https://repo.huaweicloud.com/repository/pypi/simple
下载成功时,会有显示
初始化 Supetset 数据库
初始化superset数据库时,因为在前面指定了Python和Superset的版本。有些包会不存在,会报以下错误,要先下载相关的包才行
执行下面几条命令,补全缺失的包
pip install sqlalchemy==1.3.24 -i https://repo.huaweicloud.com/repository/pypi/simple
pip install dataclasses -i https://repo.huaweicloud.com/repository/pypi/simple
pip install --upgrade cryptography==3.2 -i https://repo.huaweicloud.com/repository/pypi/simple
补全缺失的包后,再开始进行数据库的初始化
superset db upgrade
正常初始化成功后,没有报错信息
创建Superset管理员用户
在python3.6环境中,输入以下命令
export FLASK_APP=superset
superset fab create-admin
在Username [admin] 输入 admin
按三下回车直接到密码设置,中间的哪些信息可以不写
在Password 输入 123456
然后回车即可
此时Superset的就创建出一个管理员账户了
账户admin,密码123456
创建用户失败时
别人的方法,可用。删除完superset.db文件后,再重新前面初始化Superst数据库步骤
Superset 初始化
在命令行执行命令
superset init
superset 启停脚本
安装gunicorn
gunicorn用于启动和关闭Superset
pip install gunicorn -i pip install gunicorn -i https://pypi.douban.com/simple
Superset启停脚本
配置到/usr/bin下,然后使用chmod u+x superset.sh 把执行的权限打开
#!/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 0.0.0.0:8787 --daemon "superset.app:create_app()"
else
echo "superset is running."
fi
}
superset_stop(){
superset_status >/dev/null 2>&1
if [[ $? -eq 0 ]]; then
echo "superset is not run."
else
ps -ef | awk '/gunicorn/ && !/awk/{print $2}' | xargs kill -9
fi
}
case $1 in
start )
echo "start superset..."
superset_start
;;
stop )
echo "stop superset..."
superset_stop
;;
restart )
echo "restart superset..."
superset_stop
superset_start
;;
status )
superset_status >/dev/null 2>&1
if [[ $? -eq 0 ]]; then
echo "superset is not run."
else
echo "superset is running."
fi
esac
Superset 连接Mysql数据库
下载依赖
这里只补充对接 MySQL 数据源时的依赖问题,我的虚拟机的Mysql版本为8.0
使用pymsql连接,在Python3.6那个环境里执行,然后重启Superset应用(用脚本)
pip install PyMySQL
连接Mysql数据源
在连接时SQLAlchemy URI那里的格式为
mysql+pymysql://用户名:密码@主机名:端口号/数据库名称
这里的用户名和密码是你登陆Mysql的用户名和密码
mysql+pymysql://root:123456@slave2:3306/gmall_report?charset=utf8
点击测试连接,连接成功
后续就可用Sperset对数据进行展示了,参考尚硅谷Superset教程