由于 superset 目前对 windows 系统不做官方支持,
我们本文的搭建环境是 Centos7
virtualenv + python + superset
本文写于 20190712, 基于的 superset 版本是 0.28.1
Tips : 为了不污染系统的 python 环境,我们这里选用的是 virtualenv 对项目进行的管理。
virtualenv 额外篇
virtualenv 可以对环境进行管理,达到系统的 pip 安装的库 可以与 项目安装的库 不一致的目的, 解决不同项目依赖组件版本,
同时需要共存的问题。
首先,如果我们不了解 virtualenv , 系统的学习可以这篇文章。
下面简要介绍:
安装 :
pip install virtualenv
初始化一个环境 :
在一个需要环境管理的项目目录下执行 :
virtualenv venv
Tips : venv 是一个约定俗成的目录,尽量不要做修改。
安装superset
安装依赖:
# sqlite
yum install sqlite sqlite-devel
# 基础的c, c++ 库
yum intsall gcc gcc-c++
# sasl 相关
yum install cyrus-sasl-lib cyrus-sasl-devel python-devel
项目的目录结构:
[root@dev-109-kvm superset_dev]# ll
total 0
drwxr-xr-x 5 root root 43 Jul 12 14:23 venv
进入虚拟环境:
source ./venv/bin/activate
执行安装命令:
pip install superset
安装完成:
Requirement already satisfied: defusedxml in ./venv/lib/python3.7/site-packages (from python3-openid>=2.0->Flask-OpenID<2,>=1.2.5->flask-appbuilder>=1.12.1->superset) (0.6.0)
Requirement already satisfied: jdcal in ./venv/lib/python3.7/site-packages (from openpyxl<2.5,>=2.4->tabulator>=1.20->tableschema->superset) (1.4.1)
Requirement already satisfied: et-xmlfile in ./venv/lib/python3.7/site-packages (from openpyxl<2.5,>=2.4->tabulator>=1.20->tableschema->superset) (1.0.1)
Building wheels for collected packages: sasl
Building wheel for sasl (setup.py) ... done
Stored in directory: /root/.cache/pip/wheels/56/20/21/ff481fd0f4ae09d5d94c76d089f550204580b1703e44f27dd5
Successfully built sasl
Installing collected packages: sasl, thrift-sasl, superset
Successfully installed sasl-0.2.1 superset-0.28.1 thrift-sasl-0.3.0
(venv) [root@dev-109-kvm superset_dev]#
=======================
Tips : 我们先对默认安装的一些组件 进行降低版本, 不然会出错:
pandas 库 :
(venv) [root@dev-109-kvm superset_dev]# pip list | grep pandas
pandas 0.24.2
降低版本 :
pip install pandas==0.23.4
--------------
SQLAlchemy 库 :
(venv) [root@dev-109-kvm superset_dev]# pip list | grep -i sqlalchemy
Flask-SQLAlchemy 2.4.0
marshmallow-sqlalchemy 0.17.0
SQLAlchemy 1.3.5
SQLAlchemy-Utils 0.34.0
降低版本:
pip install SQLAlchemy==1.2.18
==================
初始化 superset
#创建管理员用户名和密码
fabmanager create-admin --app superset
#初始化Superset
./venv/bin/superset db upgrade
#装载初始化样例数据
./venv/bin/superset load_examples
#创建默认角色和权限
./venv/bin/superset init
#启动Superset
./venv/bin/superset runserver
将启动服务写成脚本 :
bin/run_server.sh
#!/bin/bash
BASE_DIR=$(dirname $(readlink -f $0))/../
DATE=`date +'%Y%m%d'`
#echo $BASE_DIR
source /etc/profile
source ${BASE_DIR}/venv/bin/activate
nohup superset runserver -p 8000 > ${BASE_DIR}/logs/${DATE}_runlog.log 2>&1 &
输入地址 : http://192.168.6.109:8000/login/
一些遇到的问题:
问题一 : Was unable to import superset Error: cannot import name '_maybe_box_datetimelike' from 'pandas.core.common' (E:\BI_superset_test\venv\lib\site-packages\pandas\core\common.py)
问题原因:
pandas库版本过高导致
解决方法:
降低 pandas 库的版本
问题二 :
问题三: Was unable to import superset Error: No module named '_sqlite3'
问题原因:
没有安装 sqlite3 相关的包
解决方法 :
Step1 : yum 安装相关的包
yum install sqlite sqlite-devel
Step2 :然后重新编译python或者重新安装python
对于Linux ,切换到源码目录
(venv) [root@dev-109-kvm PYTHON_HOME]# cd Python-3.7.4/
(venv) [root@dev-109-kvm Python-3.7.4]# ll
total 40164
-rw-r--r-- 1 501 501 10953 Jul 9 02:03 aclocal.m4
drwxr-xr-x 5 root root 82 Jul 12 11:25 build
-rw-r--r-- 1 501 501 631 Jul 9 02:03 CODE_OF_CONDUCT.rst
-rwxr-xr-x 1 501 501 44166 Jul 9 02:03 config.guess
-rw-r--r-- 1 root root 924713 Jul 12 11:19 config.log
...
-rw-r--r-- 1 root root 2917 Jul 12 11:25 python-config
-rw-r--r-- 1 root root 1950 Jul 12 11:25 python-config.py
-rw-r--r-- 1 root root 65363 Jul 12 11:25 python-gdb.py
-rw-r--r-- 1 501 501 10113 Jul 9 02:03 README.rst
-rw-r--r-- 1 501 501 103776 Jul 9 02:03 setup.py
drwxr-xr-x 23 501 501 322 Jul 9 02:03 Tools
执行如下命令:
make clean
make && make install
可以做如下验证 :
(venv) [root@dev-109-kvm Python-3.7.4]# python3
Python 3.7.4 (default, Jul 12 2019, 11:24:17)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sqlite3
>>>
如果成功引用,证明没有问题