1.背景
最近在调研一些开源的BI工具,像superset/datart/MetaBase之类的。因为公司业务需求,想要把BI嵌入到已有的系统中去,这就需要使用开源支持。经过实际的安装使用,最终确定使用superset。
apache-superset官网 superset是一个轻量级的BI产品,支持CSV、MySQL、Oracle、Redshift、Drill、Hive、Impala、Elasticsearch等27种数据源。而且提供众多图表类型,在集成Echarts后支持近百种图表。
但是在安装中遇到很多问题,尤其是离线安装,这里将本人安装过程简单分享一下,希望对有需要的同学提供一点帮助。
2.主要参考
编译方式目前有三种:
官网提供两种#参考链接#:docker镜像、Installing from Scratch
第二种方式尝试最高只能安装0.38版本,可能是没有最新版的镜像。
离线安装:
参考链接 https://www.freesion.com/article/46551320802/
这里离线安装0.37版本,但是安装方式可以做参考。
注:本文章主要讲利用tar包离线或半离线安装!
3.环境
系统:CentOS Linux release 7.5.1804 (Core)
python:3.7+
4.安装及部署
4.1.安装python3.8
编译安装即可(略)
4.2.安装依赖
sudo yum install gcc gcc-c++ libffi-devel python-devel python-pip python-wheel openssl-devel cyrus-sasl-devel openldap-devel
升级安装其他包:
pip3 install --upgrade pip
pip3 install --upgrade setuptools
pip3 install setuptools_scm
不升级可能报错:Could NOT find Arrow (missing: Arrow_DIR) 、 No package ‘arrow‘ found
yum -y install python3-devel
yum -y install libsass
yum -y install libsass-devel
不安装可能报错:Running setup.py install for python-geohash ... error
4.3.下载superset安装包
下载地址:https://pypi.org/project/apache-superset/#files
mkdir /home/software
tar -zxvf apache-superset-1.4.2.tar.gz -C /home/software
cd /home/software
4.4.构建Python Virtual Environment
安装virtualenv用于构建环境:
pip install virtualenv
注:如果没有网络可以下载安装Anaconda用于构建虚拟环境:
下载地址:https://www.anaconda.com/products/individual#macos
创建虚拟环境:
python3 -m venv seperset
. seperset/bin/activate
创建好并启动后如下:
4.5.开始安装
4.5.1.安装依赖
进入superset解压目录:
cd /home/software/apache-superset-1.4.2
如果有网络可以直接执行安装命令,会自动下载依赖包并安装:
python setup.py install
注:如果没有网络,需要查看apache-superset-1.4.2/apache_superset.egg-info/requires.txt文件,查看需要那些依赖进行手动下载:
找一台有网络的机器,拷贝requires.txt文件,注释掉文件中[]行(不然会报错),运行以下命令下载:
pip3 download -r ./requires.txt -d 【下载目录】
下载完成将依赖拷贝回安装机器,然后安装依赖:
pip install <目录>/<文件名>` 或 `pip install --use-wheel --no-index --find-links=wheelhouse/ <包名>
注:安装过程中可能报错 ModuleNotFoundError: No module named 'xxxx'
一般缺少对应依赖,运行:pip install xxxx
安装即可
特殊情况:1.superset async-timeout 4.0.2 is installed but requires async-timeout<4.0,>=3.0
需要降级aiohttp
pip3 install --upgrade aiohttp==3.8.1
4.5.2.初始化数据库
初始化前修改库为mysql:
创建数据库superset,添加superset用户(略)
vim /home/software/superset/lib/python3.8/site-packages/apache_superset-1.4.2-py3.8.egg/superset/config.py
SQLALCHEMY_DATABASE_URI = 'mysql://superset:superset@127.0.0.1/superset'
运行初始化命令:
superset db upgrade
注:初始化过程中可能报错1.ModuleNotFoundError: No module named '_bz2'
原因:python3.8 缺少文件_bz2.cpython-36m-x86_64-linux-gnu.so
解决方式:下载该文件,或者python3.6安装包找到该文件
cd /usr/lib/python3.8/lib-dynload/
cp /usr/lib/python3.6/lib-dynload/_bz2.cpython-36m-x86_64-linux-gnu.so ./
chmod 755 _bz2.cpython-36m-x86_64-linux-gnu.so
mv _bz2.cpython-36m-x86_64-linux-gnu.so _bz2.cpython-38-x86_64-linux-gnu.so
还可能报错:ImportError: libbz2.so.1.0: cannot open shared object file: No such file or directory
解决方式:
yum install -y bzip2*
cd /usr/lib64/
ln -s libbz2.so.1.0.6 libbz2.so.1.0
2.ModuleNotFoundError: No module named 'MySQLdb'
python3.8需要安装如下:
pip install mysqlclient
3.superset ImportError: cannot import name 'soft_unicode' from 'markupsafe 或 ImportError: cannot import name 'url_encode' from 'werkzeug''
markupsafe版本过高:
pip3 install --upgrade markupsafe==2.0.1
pip3 install werkzeug==0.16.0
4.5.3.创建用户
$ export FLASK_APP=superset
superset fab create-admin
4.5.4.加载用例
加载用例需要githup下载,下载慢或者报错建议修改为本地加载
修改后运行以下命令加载:
superset load_examples
注:加载过程中可能还会报错,建议多长尝试几次!
4.5.5.创建默认角色及权限
superset init
4.6.运行及启动
前台启动:不指定好 -h 会访问不到
superset run -p 8088 --with-threads --debugger -h 0.0.0.0
后台启动:
nohup superset run -p 8088 --with-threads --debugger -h 0.0.0.0 &
退出虚拟环境:
deactivate
5.汉化
这里只说简单汉化,深度汉化没去研究。
在1.4.2中已经有汉语支持,不过不够全面,这里只需要修改以下参数:
修改config.py文件:
vim /home/software/superset/lib/python3.8/site-packages/apache_superset-1.4.2-py3.8.egg/superset/config.py
BABEL_DEFAULT_LOCALE = "zh"
6.总结
好了,以上基本就安装完成,过程中如果还有其他错误欢迎交流。
关于superset的使用,如果用过其他的BI软件,这里基本也是大同小异的。这里也有点小技巧,因为导入了很多官方提供的样例,我们都是可以拿来参考的。
完结!
<( ̄▽ ̄)/