青海专业网站建设推广平台建设,网站空间就是服务器吗,陕西建设人才网站,杭州公司牌照申请条件踩雷了无数次终于解决了Superset的一系列问题
现在是北京时间2023年12月27日#xff0c;亲测有效。
Superset概述
Apache Superset是一个现代的数据探索和可视化平台。它功能强大且十分易用#xff0c;可对接各种数据源#xff0c;包括很多现代的大数据分析引擎#xff…踩雷了无数次终于解决了Superset的一系列问题
现在是北京时间2023年12月27日亲测有效。
Superset概述
Apache Superset是一个现代的数据探索和可视化平台。它功能强大且十分易用可对接各种数据源包括很多现代的大数据分析引擎拥有丰富的图表展示形式并且支持自定义仪表盘。 特别注意
下面的教程所使用的服务器操作系统为CentOS 7Superset对接的数据源为MySQL数据库。
Superset官网地址Welcome | Superset
安装Python环境
Superset是由Python语言编写的Web应用要求Python3.7以上的环境。
安装Miniconda
conda是一个开源的包、环境管理器可以用于在同一个机器上安装不同Python版本的软件包及其依赖并能够在不同的Python环境之间切换Anaconda包括Conda、Python以及一大堆安装好的工具包比如numpy、pandas等Miniconda包括Conda、Python。
此处我们不需要如此多的工具包故选择MiniConda。
下载MinicondaPython3版本
下载地址https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
安装Miniconda
1执行以下命令进行安装并按照提示操作直到安装完成。 [zhangxihadoop102 lib]$ bash Miniconda3-latest-Linux-x86_64.sh 2在安装过程中出现以下提示时可以指定安装路径 /opt/module/miniconda3 3出现以下字样即为安装完成 3加载环境变量配置文件使之生效 [zhangxihadoop102 lib]$ source ~/.bashrc 4取消激活base环境
Miniconda安装完成后每次打开终端都会激活其默认的base环境我们可通过以下命令禁止激活默认base环境。 [zhangxihadoop102 lib]$ conda config --set auto_activate_base false 创建Python3.8环境
1配置conda国内镜像此处可不配置国外镜像比清华镜像更快
(base) [zhangxihadoop102 ~]$ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
(base) [zhangxihadoop102 ~]$ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
(base) [zhangxihadoop102 ~]$ conda config --set show_channel_urls yes查看conda的镜像channel配置
[zhangxihadoop102 ~]$ conda config --show channels- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free- defaults删除清华镜像,继续用默认的
[zhangxihadoop102 ~]$ conda config --remove-key channels
[zhangxihadoop102 ~]$ conda config --show channels- defaults2创建Python3.8环境
(base) [zhangxihadoop102 ~]$ conda create --name superset python3.8.16说明conda环境管理常用命令
创建环境conda create -n env_name
查看所有环境conda info --envs
删除一个环境conda remove -n env_name --all
3激活superset环境
(base) [zhangxihadoop102 ~]$ conda activate superset激活后效果如下图所示 说明退出当前环境
(superset) [zhangxihadoop102 ~]$ conda deactivate4执行python -V命令查看python版本
(superset) [zhangxihadoop102 ~]$ python -V
Python 3.8.16Superset部署
安装依赖
安装Superset之前需安装以下所需依赖。
(superset) [zhangxihadoop102 ~]$ sudo yum install -y gcc gcc-c libffi-devel python-devel python-pip python-wheel python-setuptools openssl-devel cyrus-sasl-devel openldap-devel安装Superset
1更新pip
(superset) [zhangxihadoop102 ~]$ pip install --upgrade pip -i https://pypi.douban.com/simple/说明pip是python的包管理工具可以和centos中的yum类比
2安装Supetset
vim base.txt文件至任意路径添加以下内容
aiohttp3.8.1# via slackclient
aiosignal1.2.0# via aiohttp
alembic1.6.5# via flask-migrate
amqp5.1.0# via kombu
apispec[yaml]3.3.2# via flask-appbuilder
async-timeout4.0.2# via aiohttp
attrs21.2.0# via# aiohttp# jsonschema
babel2.9.1# via flask-babel
backoff1.11.1# via apache-superset
billiard3.6.4.0# via celery
bleach3.3.1# via apache-superset
brotli1.0.9# via flask-compress
cachelib0.4.1# via apache-superset
celery5.2.2# via apache-superset
cffi1.14.6# via cryptography
charset-normalizer2.0.4# via aiohttp
click8.0.4# via# apache-superset# celery# click-didyoumean# click-plugins# click-repl# flask# flask-appbuilder
click-didyoumean0.3.0# via celery
click-plugins1.1.1# via celery
click-repl0.2.0# via celery
colorama0.4.4# via# apache-superset# flask-appbuilder
convertdate2.3.2# via holidays
cron-descriptor1.2.24# via apache-superset
croniter1.0.15# via apache-superset
cryptography3.4.7# via apache-superset
deprecation2.1.0# via apache-superset
dnspython2.1.0# via email-validator
email-validator1.1.3# via flask-appbuilder
flask2.0.3# via# apache-superset# flask-appbuilder# flask-babel# flask-caching# flask-compress# flask-jwt-extended# flask-login# flask-migrate# flask-sqlalchemy# flask-wtf
flask-appbuilder4.1.3# via apache-superset
flask-babel1.0.0# via flask-appbuilder
flask-caching1.10.1# via apache-superset
flask-compress1.10.1# via apache-superset
flask-jwt-extended4.3.1# via flask-appbuilder
flask-login0.4.1# via flask-appbuilder
flask-migrate3.1.0# via apache-superset
flask-sqlalchemy2.5.1# via# flask-appbuilder# flask-migrate
flask-talisman0.8.1# via apache-superset
flask-wtf0.14.3# via# apache-superset# flask-appbuilder
frozenlist1.3.0# via# aiohttp# aiosignal
func-timeout4.3.5# via apache-superset
geographiclib1.52# via geopy
geopy2.2.0# via apache-superset
graphlib-backport1.0.3# via apache-superset
gunicorn20.1.0# via apache-superset
hashids1.3.1# via apache-superset
holidays0.10.3# via apache-superset
humanize3.11.0# via apache-superset
idna3.2# via# email-validator# yarl
isodate0.6.0# via apache-superset
itsdangerous2.1.1# via# flask# flask-wtf
jinja23.0.3# via# flask# flask-babel
jsonschema3.2.0# via flask-appbuilder
kombu5.2.4# via celery
korean-lunar-calendar0.2.1# via holidays
mako1.1.4# via alembic
markdown3.3.4# via apache-superset
markupsafe2.0.1# via# jinja2# mako# wtforms
marshmallow3.13.0# via# flask-appbuilder# marshmallow-enum# marshmallow-sqlalchemy
marshmallow-enum1.5.1# via flask-appbuilder
marshmallow-sqlalchemy0.23.1# via flask-appbuilder
msgpack1.0.2# via apache-superset
multidict5.1.0# via# aiohttp# yarl
numpy1.22.1# via# apache-superset# pandas# pyarrow
packaging21.3# via# bleach# deprecation
pandas1.3.4# via apache-superset
parsedatetime2.6# via apache-superset
pgsanity0.2.9# via apache-superset
polyline1.4.0# via apache-superset
prison0.2.1# via flask-appbuilder
prompt-toolkit3.0.28# via click-repl
pyarrow5.0.0# via apache-superset
pycparser2.20# via cffi
pyjwt2.4.0# via# apache-superset# flask-appbuilder# flask-jwt-extended
pymeeus0.5.11# via convertdate
pyparsing3.0.6# via# apache-superset# packaging
pyrsistent0.16.1# via jsonschema
python-dateutil2.8.2# via# alembic# apache-superset# croniter# flask-appbuilder# holidays# pandas
python-dotenv0.19.0# via apache-superset
python-editor1.0.4# via alembic
python-geohash0.8.5# via apache-superset
pytz2021.3# via# babel# celery# convertdate# flask-babel# pandas
pyyaml5.4.1# via# apache-superset# apispec
redis3.5.3# via apache-superset
selenium3.141.0# via apache-superset
simplejson3.17.3# via apache-superset
six1.16.0# via# bleach# click-repl# flask-talisman# holidays# isodate# jsonschema# polyline# prison# pyrsistent# python-dateutil# sqlalchemy-utils# wtforms-json
slackclient2.5.0# via apache-superset
sqlalchemy1.3.24# via# alembic# apache-superset# flask-appbuilder# flask-sqlalchemy# marshmallow-sqlalchemy# sqlalchemy-utils
sqlalchemy-utils0.37.8# via# apache-superset# flask-appbuilder
sqlparse0.3.0# via apache-superset
tabulate0.8.9# via apache-superset
typing-extensions3.10.0.0# via apache-superset
urllib31.26.6# via selenium
vine5.0.0# via# amqp# celery# kombu
wcwidth0.2.5# via prompt-toolkit
webencodings0.5.1# via bleach
werkzeug2.0.3# via# flask# flask-jwt-extended
wtforms2.3.3# via# flask-appbuilder# flask-wtf# wtforms-json
wtforms-json0.3.3# via apache-superset
yarl1.6.3# via aiohttp# The following packages are considered to be unsafe in a requirements file:
# setuptools
查看文件
(superset) [zhangxihadoop102 ~]$ ll ~
总用量 12
-rw-r--r--. 1 zhangxi zhangxi 5795 2月 3 15:27 base.txt
drwxrwxr-x. 2 zhangxi zhangxi 4096 2月 6 11:42 bin该文件可用于指定superset依赖组件及版本下载地址及内容如下。
https://raw.githubusercontent.com/apache/superset/2.0.0/requirements/base.txt
在base.txt所在目录下执行如下命令安装SuperSet
(superset) [zhangxihadoop102 ~]$ pip install apache-superset2.0.0 -i https://pypi.tuna.tsinghua.edu.cn/simple -r base.txt说明 -i的作用是指定镜像这里选择国内镜像 -r的作用是指定superset依赖组件及相应版本指向base.txt文件即可
配置Superset元数据库
Superset的元数据支持MySQL、PostgreSQL此处采用MySQL。
1在MySQL中创建superset元数据库
mysql CREATE DATABASE superset DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;2创建superset用户
mysql create user superset% identified WITH mysql_native_password BY superset;
mysql grant all privileges on *.* to superset% with grant option;
mysql flush privileges;3修改superset配置文件
(superset) [zhangxihadoop102 ~]$ vim /opt/module/miniconda3/envs/superset/lib/python3.8/site-packages/superset/config.py修改内容如下184、185行
# SQLALCHEMY_DATABASE_URI sqlite:/// os.path.join(DATA_DIR, superset.db)
SQLALCHEMY_DATABASE_URI mysql://superset:supersethadoop102:3306/superset?charsetutf84安装python msyql驱动
(superset) [zhangxihadoop102 ~]$ conda install mysqlclient5初始化superset元数据
(superset) [zhangxihadoop102 ~]$ export FLASK_APPsuperset
(superset) [zhangxihadoop102 ~]$ superset db upgradeSupersetSet初始化
1创建管理员用户 (superset) [zhangxihadoop102 ~]$ superset fab create-admin 2初始化superset (superset) [zhangxihadoop102 ~]$ superset init 启动Supterset
1安装gunicorn (superset) [zhangxihadoop102 ~]$ pip install gunicorn -i https://pypi.douban.com/simple/ 说明gunicorn是一个Python Web Server可以和java中的Tomcat类比
2启动Superset
确保当前conda环境为superset及下图所示 启动
(superset) [zhangxihadoop102 ~]$ gunicorn --workers 5 --timeout 120 --bind hadoop102:8787 superset.app:create_app() --daemon说明
--workers指定进程个数--timeoutworker进程超时时间超时会自动重启--bind绑定本机地址即为Superset访问地址--daemon后台运行
登录Superset
访问http://hadoop102:8787
3停止superset
1停掉gunicorn进程
(superset) [zhangxihadoop102 ~]$ ps -ef | awk /superset/ !/awk/{print $2} | xargs kill -92退出superset环境
(superset) [zhangxihadoop102 ~]$ conda deactivatesuperset启停脚本
1创建superset.sh文件
[zhangxihadoop102 bin]$ vim superset.sh内容如下
#!/bin/bashsuperset_status(){resultps -ef | awk /gunicorn/ !/awk/{print $2} | wc -lif [[ $result -eq 0 ]]; thenreturn 0elsereturn 1fi
}
superset_start(){source ~/.bashrcsuperset_status /dev/null 21if [[ $? -eq 0 ]]; thenconda activate superset ; gunicorn --workers 5 --timeout 120 --bind hadoop102:8787 --daemon superset.app:create_app()elseecho superset正在运行fi}superset_stop(){superset_status /dev/null 21if [[ $? -eq 0 ]]; thenecho superset未在运行elseps -ef | awk /gunicorn/ !/awk/{print $2} | xargs kill -9fi
}case $1 instart )echo 启动Supersetsuperset_start;;stop )echo 停止Supersetsuperset_stop;;restart )echo 重启Supersetsuperset_stopsuperset_start;;status )superset_status /dev/null 21if [[ $? -eq 0 ]]; thenecho superset未在运行elseecho superset正在运行fi
esac2加执行权限
[zhangxihadoop102 bin]$ chmod x superset.sh3测试
启动superset
[zhangxihadoop102 bin]$ superset.sh start停止superset
[zhangxihadoop102 bin]$ superset.sh stop关于Apache Superset的使用后续讲解