Superset——安装/初始化/启动

环境准备

Superset运行的环境是Python的Flask(一个Python的Web开发框架),所以,在安装Superset之前,需要先安装Python运行环境,可以参照我写的另外一篇文章:《Python》

为了能更好的管理Python的环境,这里建议大家也顺带安装virtualenv,最大的好处是可以隔离开Python每个项目的运行环境,方便后期管理。

pip3.9 install virtualenv

pip是在安装python时自带安装进系统的

安装完virtualenv后,我们可以在一个独立的目录中配置一整套python环境,这里我配置的路径为/opt/superset

cd /opt
mkdir superset
cd superset
virtualenv venv --python=python3.9

执行完以上命令后,会有生成一个/opt/superset/venv的文件夹,我们通过如下的命令来激活python的虚拟环境

[root@localhost venv]# pwd
/opt/superset/venv
[root@localhost venv]# source ./bin/activate
(venv) [root@localhost venv]# 

当看到命令提示行字前面出现(venv)时,即表示虚拟环境激活成功,这个时候,所有的python命令和相关的依赖包都只会影响当前的虚拟环境,方便我们部署和管理。

安装

环境准备就绪后,就可以通过pip来直接安装 superset 了,命令如下:

(venv) [root@localhost venv]# pip install apache-superset

待项目的下载完毕后,即表示superset安装到了系统中,且superset的命令也会安装到/opt/superset/venv/bin下,方便后面进行初始化和启动的操作。

数据库初始化

superset按照完毕后,首先要做的是数据初始化

(venv) [root@localhost venv]# pwd
/opt/superset/venv
(venv) [root@localhost venv]# superset db upgrade

第一次运行该命令时,会提示如下错误

Could not locate a Flask application. Use the 'flask --app' option, 'FLASK_APP' environment variable, or a 'wsgi.py' or 'app.py' file in the current directory.

这个是因为superset是基于Flask框架开发的,运行时,需要到项目的根目录下运行,因为我的环境是python的virtualenv,所以,对应的superset根目录为/opt/superset/venv/lib/python3.9/site-packages/superset,到该目录下重新执行命令。

(venv) [root@localhost venv]# cd /opt/superset/venv/lib/python3.9/site-packages/superset
(venv) [root@localhost superset]# superset db upgrade

另外的几个异常处理(都是与依赖库的版本有关,如果出现可以通过降低版本来处理):

ModuleNotFoundError: No module named 'werkzeug.wrappers.etag'

# 这个是在 superset 2.0 版本出现的bug,通过降低Werkzeug的版本解决
python -m pip uninstall -y Werkzeug
python -m pip install Werkzeug==2.0.3


TypeError: __init__() got an unexpected keyword argument 'unbound_message'

# 这个是在 superset 2.0 版本出现的bug,需要降低Flask的版本到2.0.3
python -m pip uninstall -y Flask
python -m pip install Flask==2.0.3


ModuleNotFoundError: No module named 'wtforms.ext'
# 这个是因为WTForms 3.0的版本去掉了ext,需要降低WTForms的版本到2.3.3
python -m pip uninstall -y WTForms
python -m pip install WTForms==2.3.3

启动

完成了superset的安装和数据库的初始化后,我们就要开始尝试启动superset了。在启动服务器之前,我们可以通过下面的命令来初始化一些系统权限相关的账号、角色等功能

(venv) [root@localhost superset]# cd /opt/superset/venv/
(venv) [root@localhost venv]# export FLASK_APP=superset
(venv) [root@localhost venv]# superset fab create-admin

Username [admin]: 
User first name [admin]: 
User last name [user]: 
Email [admin@fab.org]: 449825052@qq.com
Password: 
Repeat for confirmation: 
Recognized Database Authentications.
Admin User admin created.
(venv) [root@localhost venv]# 

按照提示输入管理员账号的相关信息。

# 导入一些示例数据
(venv) [root@localhost venv]# superset load_examples

可能会因为网络问题,有些数据无法导入,这一步也可以忽略,后面我们可以用自己的数据来做示例。

# 初始化默认的角色和权限
(venv) [root@localhost venv]# superset init
# 启动superset
(venv) [root@localhost venv]# export FLASK_APP=superset
(venv) [root@localhost venv]# superset run -p 8088 --with-threads --reload --debugger

启动成功后,在浏览器中通过http://localhost:8088open in new window即可访问superset系统,登录的管理员账号就是在上面的superset fab create-admin命令中填写的账号和密码。

中文设置

Superset默认界面语言为英文的,可以通过修改/opt/superset/venv/lib/python3.9/site-packages/superset/config.py这个文件来设置为中文,只需要在config.py文件中修改BABEL_DEFAULT_LOCALE的值为zh即可。

# 修改superset的config.py文件中关于语言的设置
# 文件路径:/site-packages/superset/config.py
# ---------------------------------------------------
# Babel config for translations
# ---------------------------------------------------
# Setup default language
BABEL_DEFAULT_LOCALE = "zh"
# Your application default translation path
BABEL_DEFAULT_FOLDER = "superset/translations"
# The allowed translation for you app
LANGUAGES = {
    "en": {"flag": "us", "name": "English"},
    "es": {"flag": "es", "name": "Spanish"},
    "it": {"flag": "it", "name": "Italian"},
    "fr": {"flag": "fr", "name": "French"},
    "zh": {"flag": "cn", "name": "Chinese"},
    "ja": {"flag": "jp", "name": "Japanese"},
    "de": {"flag": "de", "name": "German"},
    "pt": {"flag": "pt", "name": "Portuguese"},
    "pt_BR": {"flag": "br", "name": "Brazilian Portuguese"},
    "ru": {"flag": "ru", "name": "Russian"},
    "ko": {"flag": "kr", "name": "Korean"},
    "sk": {"flag": "sk", "name": "Slovak"},
    "sl": {"flag": "si", "name": "Slovenian"},
    "nl": {"flag": "nl", "name": "Dutch"},
}
# Turning off i18n by default as translation in most languages are
# incomplete and not well maintained.
LANGUAGES = {}

修改完毕后,重启Superset的服务器,即可生效显示中文界面。

Last Updated:
Contributors: 小5