文章 62
浏览 15135
superset高效率的数据源图表展示工具使用

superset高效率的数据源图表展示工具使用

image.png

superset 介绍

Apache Superset 是一个现代的数据探索和可视化平台。它功能强大且十分易用,可对接各种数据源,包括很多现代的大数据分析引擎,拥有丰富的图表展示形式,并且支持自定义仪表盘。

官网

https://superset.apache.org/

Superset 安装

  • 安装 Python 环境

    superset 是由 Python 语言编写的 Web 应用,要求 Python3.7 的环境。

  • 安装 Miniconda

conda 是一个开源的包、环境管理器,可以用于在同一个机器上安装不同 Python 版本的软件包及其依赖,并能够在不同的 Python 环境之间切换,Anaconda 包括 Conda、Python 以及一大堆安装好的工具包,比如:numpy、pandas 等,Miniconda 包括 Conda、Python。此处,我们不需要如此多的工具包,故选择 MiniConda。

  1. 出现以下字样,即为安装完成

    image.png

  • 加载环境变量配置文件,使之生效
source ~/.bashrc
  • 取消激活 base 环境

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

conda config --set auto_activate_base false
  • 创建 Python3.7 环境

    1. 配置 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 版本

image.png

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 步创建的管理员账号进行登录。

image.png

停止 superset

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

退出 superset 环境

conda deactivate

superset 启停脚本

  1. 创建 superset.sh 文件
  2. #!/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 
    
  3. 加执行权限
  4. 测试

Superset 使用

准备 MySQL 数据源

1.准备好测试数据

2.对接 MySQL 数据源

conda install mysqlclient 

对接不同的数据源,需安装不同的依赖,以下地址为官网说明

https://superset.apache.org/docs/databases/installing-database-drivers

3.重启 Superset

数据源配置

image.png

点击填写 Database 及 SQL Alchemy URI 注:SQL Alchemy URI 编写规范:mysql://用户名:密码 @ 主机名:端口号/数据库名称

image.png

检查连接后保存

Table 配置

setp1:image.png

setp2:image.png

setp3:image.png

如果是 pgsql 等其他数据源需要配置 schema

配置完点击保存即可

制作仪表盘

image.png

创建图表

setp1:image.png

setp2:image.png

image.png

setp3:image.png

setp4:点击“Run Query

image.png

其他类型图标按同样的流程创建即可

命名该图表,并保存至仪表盘

image.png

仪表盘布局

setp1:image.png

setp2:image.png

根据自己的意愿拖拽即可

自动刷新

image.png

setp2 选择刷新时间间隔

image.png

用户权限接入 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 中一些常见角色的默认权限:

  1. Alpha 角色:Alpha 角色是最低权限的角色,通常用于限制用户的访问权限。Alpha 用户只能查看公开的仪表盘和数据源,不能编辑它们。
  2. Gamma 角色:Gamma 角色是一种普通用户角色,具有一般的查看和编辑权限。Gamma 用户可以查看和编辑公开的仪表盘和数据源,但不能创建新的资源。
  3. granter 角色:这是一个特殊的角色,用于授予或撤销其他用户的资源权限。Granter 角色通常由管理员使用,以管理其他用户的权限。
  4. sql_lab 角色:SQL Lab 角色允许用户在 SQL Lab 中执行 SQL 查询。这个角色通常赋予需要运行 SQL 查询的用户。
  5. Admin 角色:Admin 角色是最高权限的角色,具有对 Superset 所有资源的完全控制权限。Admin 用户可以查看、编辑、创建和删除任何仪表盘、数据源和用户。
  6. public 角色 public 角色通常是用来表示匿名或未登录用户的默认角色。这个角色通常拥有有限的权限,允许匿名用户或未登录用户访问公开的资源,如公开的仪表盘或公开的数据源,但通常不能编辑这些资源。
  • 以下是 "public" 角色的典型特征:
  • 有限的权限:通常,"public" 角色只被授予查看仪表盘和数据源的权限,不能编辑或创建这些资源。这确保了匿名用户只能查看信息,而不能进行更改。
  • 公开的资源:"public" 角色通常用于访问公开的资源,这些资源可以被所有人查看,而不需要登录或认证。这对于创建公共可访问的仪表盘或数据非常有用。
  • 限制性配置:管理员可以配置 "public" 角色的权限,以确保不会向匿名用户或未登录用户授予不希望他们访问的资源权限。
  • 可以自定义赋予 public 角色权限

标题:superset高效率的数据源图表展示工具使用
作者:xiaohugg
地址:https://xiaohugg.top/articles/2023/09/08/1694156561938.html

人民有信仰 民族有希望 国家有力量