Superset是Airbnb开源的BI数据分析与可视化平台,该工具主要特点是可自助分析、自定义仪表盘、分析结果可视化(导出)、用户/角色权限控制,还集成了一个SQL编辑器,可以进行SQL编辑查询等,原来是用于支持Druid的可视化分析,后面发展为支持很多种关系数据库及大数据计算框架,如:mysql, oracle, Postgres, Presto, sqlite, Redshift, Impala, SparkSQL, Greenplum, MSSQL等。好的,不多说,下来简单介绍一下Superset的安装方法:
1.安装Python3
Superset已经开始弃用Python2了,并且仅仅支持Python 3.6左右的版本以利用Python的新特性,减少支持旧版本所带来的负担。Superset官方建议使用3.6的版本。我们这里通过Python源码编译安装Python 3.6,具体的方法请参阅我的另一篇博文,这里不多做介绍。
2. 安装Superset
官方给出的安装方法还是很简单的,具体如下:
# Install superset
pip3 install superset
# Create an admin user (you will be prompted to set a username, first and last name before setting a password)
fabmanager create-admin --app superset
# Initialize the database
superset db upgrade
# Load some data to play with
superset load_examples
# Create default roles and permissions
superset init
# To start a development web server on port 8088, use -p to bind to another port
superset runserver -d
一般Python正确安装之后,Superset就可以成功安装,但是在进行配置的时候可能会出现以下问题:
0. 安装superset时报错
error: sasl/sasl.h: No such file or directory
问题原因是缺少sasl相关的包
解决办法:
yum -y install cyrus-sasl cyrus-sasl-devel cyrus-sasl-lib
然后再重新编译一下Python
1. 设置用户时报错
在进行fabmanager create-admin --app superset操作时可能报
No module named _sqlite3
问题原因是没有安装sqlite
解决办法:
yum install sqlite-devel
然后再重新编译一下Python
Was unable to import superset Error: cannot import name '_maybe_box_datetimelike' from 'pandas.core.common'
问题原因是pandas 库版本太高导致的,需要安装低版本的pandas库。
解决办法:
# 查看当前 pandas 版本
$ pip3 list | grep pandas
pandas 0.24.2
# 安装低版本 pandas
$ pip3 install pandas==0.23.4
然后重新运行 “fabmanager create-admin --app superset” 命令创建管理员用户.
2. 初始化数据库时报错
在初始化数据库的时候可能报如下错误:
sqlalchemy.exc.InvalidRequestError: Can't determine which FROM clause to join from, there are multiple FROMS which can join to this entity. Try adding an explicit ON clause to help resolve the ambiguity.
问题原因是SQLAlchemy 库版本太高导致的,需要安装低版本的 SQLAlchemy 库。
解决办法:
# 查看当前 SQLAlchemy 版本
$ pip3 list | grep -i sqlalchemy
Flask-SQLAlchemy 2.3.2
SQLAlchemy 1.3.2
SQLAlchemy-Utils 0.33.11
# 安装低版本 SQLAlchemy
$ pip3 install SQLAlchemy==1.2.18
然后重新运行 “superset db upgrade” 命令初始化数据库。