superset 介绍
Apache Superset 是一个现代的数据探索和可视化平台。它功能强大且十分易用,可对接各种数据源,包括很多现代的大数据分析引擎,拥有丰富的图表展示形式,并且支持自定义仪表盘。
官网
Superset 安装
-
安装 Python 环境
superset 是由 Python 语言编写的 Web 应用,要求 Python3.7 的环境。
-
安装 Miniconda
conda 是一个开源的包、环境管理器,可以用于在同一个机器上安装不同 Python 版本的软件包及其依赖,并能够在不同的 Python 环境之间切换,Anaconda 包括 Conda、Python 以及一大堆安装好的工具包,比如:numpy、pandas 等,Miniconda 包括 Conda、Python。此处,我们不需要如此多的工具包,故选择 MiniConda。
-
下载 Miniconda(Python3 版本)
下载地址:https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
-
安装 Miniconda
-
执行以下命令进行安装,并按照提示操作,直到安装完成。
bash Miniconda3-latest-Linux-x86_64.sh
-
在安装过程中,出现以下提示时,可以指定安装路径
-
-
出现以下字样,即为安装完成
- 加载环境变量配置文件,使之生效
source ~/.bashrc
- 取消激活 base 环境
Miniconda 安装完成后,每次打开终端都会激活其默认的 base 环境,我们可通过以下命令,禁止激活默认 base 环境。
conda config --set auto_activate_base false
-
创建 Python3.7 环境
- 配置 conda 国内镜像
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
2.创建 Python3.7 环境
conda create --name superset python=3.7
conda 环境管理常用命令
- 创建环境:conda create -n env_name python=3.7
- 查看所有环境:conda info --envs
- 删除一个环境:conda remove -n env_name --all
3.激活 superset 环境
conda activate superset
4.执行 python 命令查看 python 版本
Superset 部署
安装依赖
sudo yum install -y gcc gccc++ libffi-devel python-devel python-pip python-wheel pythonsetuptools openssl-devel cyrus-sasl-devel openldap-devel
安装 Superset
安装(更新)setuptools 和 pip
pip install --upgrade setuptools pip -i https://pypi.douban.com/simple/
pip 是 python 的包管理工具,可以和 CentOS 中的 yum 类比
安装 Supetset
pip install apache-superset i https://pypi.douban.com/simple/
-i 的作用是指定镜像,这里选择国内镜像注:如果遇到网络错误导致不能下载,可尝试更换镜像
初始化 Supetset 数据库
superset db upgrade
创建管理员用户
export FLASK_APP=superset
superset fab create-admin
flask 是一个 python Web 框架,Superset 使用的就是 flask
Superset 初始化
superset init
启动 Supterset
安装 gunicorn
pip install gunicorn -i https://pypi.douban.com/simple/
gunicorn 是一个 Python Web Server,可以和 Java 中的 Tomcat 类比
启动 Superset
unicorn --workers 5 --timeout
120 --bind hadoop102:8787 "superset.app:create_app()" --daemon
-workers:指定进程个数
--timeout:worker 进程超时时间,超时会自动重启
--bind:绑定本机地址,即为 Superset 访问地址
--daemon:后台运行(3)登录 Superset 访问 http://localhost/8787 并使用 2.2.2 节中第 4 步创建的管理员账号进行登录。
停止 superset
ps -ef | awk '/superset/
&& !/awk/{print $2}' | xargs kill -9
退出 superset 环境
conda deactivate
superset 启停脚本
- 创建 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 hadoop102:8787 --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
- 加执行权限
- 测试
Superset 使用
准备 MySQL 数据源
1.准备好测试数据
2.对接 MySQL 数据源
conda install mysqlclient
对接不同的数据源,需安装不同的依赖,以下地址为官网说明
https://superset.apache.org/docs/databases/installing-database-drivers
3.重启 Superset
数据源配置
点击填写 Database 及 SQL Alchemy URI 注:SQL Alchemy URI 编写规范:mysql://用户名:密码 @ 主机名:端口号/数据库名称
检查连接后保存
Table 配置
setp1:
setp2:
setp3:
如果是 pgsql 等其他数据源需要配置 schema
配置完点击保存即可
制作仪表盘
创建图表
setp1:
setp2:
setp3:
setp4:点击“Run Query
其他类型图标按同样的流程创建即可
命名该图表,并保存至仪表盘
仪表盘布局
setp1:
setp2:
根据自己的意愿拖拽即可
自动刷新
setp2 选择刷新时间间隔
用户权限接入 ldap
安装 LDAP 依赖
pip install Flask-LDAP
修改配置(superset/config.py)
vi ~/anaconda3/envs/super/lib/python3.6/site-packages/superset/config.py
注释掉
#AUTH_TYPE = AUTH_DB
#写入
from flask_appbuilder.security.manager import AUTH_DB,AUTH_LDAP
AUTH_TYPE = AUTH_LDAP
AUTH_USER_REGISTRATION_ROLE = "Admin" (用户登陆superset后获得的权限)
AUTH_USER_REGISTRATION = True
AUTH_LDAP_SERVER = "ldap://ip:端口" (填写自己的IP和端口)
AUTH_LDAP_SEARCH = "OU=Accounts,DC=do,DC=cn" (填写自己信息)
#AUTH_LDAP_APPEND_DOMAIN = "do.cn" (如果开启,登录时不加@邮箱)
#AUTH_LDAP_EMAIL_FIELD = "mail"
AUTH_LDAP_EMAIL_FIELD = "userPrincipalName" (使用登录的用户名 作为邮箱)
AUTH_LDAP_UID_FIELD="userPrincipalName"
AUTH_LDAP_FIRSTNAME_FIELD="givenName"
AUTH_LDAP_LASTTNAME_FIELD="sn"
AUTH_LDAP_USE_TLS = False
重启 superset 服务
superset 导出 CSV 中文乱码
superset 导出 CSV 默认编码为 utf-8,在导出包含中文的文本 CSV 会有乱码问题
-
在安装目录下执行 grep -r "superset/config.py" ./
-
修改 superset/config.py,将 UTF-8 修改成 GBK,如下所示:
CSV_EXPORT = { 'encoding': 'gbk',
-
修改后重启,如果还有问题,继续执行第二步:
-
grep -r "superset/views/core.py" ./
修改 superset/views/core.py
-
CSV = df.to_csv(index=False, config.get('CSV_EXPORT'))
response = CsvResponse(csv, mimetype='text/csv')
-
如果换成 gbk 不生效,则再尝试换成 utf-8-sig
superset 权限控制
Apache Superset 的每个角色都有一组默认权限,这些默认权限规定了用户在角色下可以执行的操作。以下是 Superset 中一些常见角色的默认权限:
- Alpha 角色:Alpha 角色是最低权限的角色,通常用于限制用户的访问权限。Alpha 用户只能查看公开的仪表盘和数据源,不能编辑它们。
- Gamma 角色:Gamma 角色是一种普通用户角色,具有一般的查看和编辑权限。Gamma 用户可以查看和编辑公开的仪表盘和数据源,但不能创建新的资源。
- granter 角色:这是一个特殊的角色,用于授予或撤销其他用户的资源权限。Granter 角色通常由管理员使用,以管理其他用户的权限。
- sql_lab 角色:SQL Lab 角色允许用户在 SQL Lab 中执行 SQL 查询。这个角色通常赋予需要运行 SQL 查询的用户。
- Admin 角色:Admin 角色是最高权限的角色,具有对 Superset 所有资源的完全控制权限。Admin 用户可以查看、编辑、创建和删除任何仪表盘、数据源和用户。
- public 角色 public 角色通常是用来表示匿名或未登录用户的默认角色。这个角色通常拥有有限的权限,允许匿名用户或未登录用户访问公开的资源,如公开的仪表盘或公开的数据源,但通常不能编辑这些资源。
- 以下是 "public" 角色的典型特征:
- 有限的权限:通常,"public" 角色只被授予查看仪表盘和数据源的权限,不能编辑或创建这些资源。这确保了匿名用户只能查看信息,而不能进行更改。
- 公开的资源:"public" 角色通常用于访问公开的资源,这些资源可以被所有人查看,而不需要登录或认证。这对于创建公共可访问的仪表盘或数据非常有用。
- 限制性配置:管理员可以配置 "public" 角色的权限,以确保不会向匿名用户或未登录用户授予不希望他们访问的资源权限。
- 可以自定义赋予 public 角色权限