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:8088即可访问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的服务器,即可生效显示中文界面。