Superset是由Airbnb(知名在线房屋短租公司)开源BI数据分析与可视化平台(曾用名Caravel、Panoramix),该工具主要特点是可自助分析、自定义仪表盘、分析结果可视化(导出)、用户/角色权限控制,还集成了一个SQL编辑器,可以进行SQL编辑查询等,原来是用于支持Druid的可视化分析,后面发展为支持很多种关系数据库及大数据计算框架,如:mysql, oracle, Postgres,Presto,sqlite, Redshift,Impala, SparkSQL, Greenplum, MSSQL.
linux环境安装前提条件:
yum install gcc libffi-devel python-devel python-pip python-wheel openssl-devel libsasl2-devel openldap-devel
yum install gcc-c++
#根据需要安装下面的包
pip install mysqlclient
pip install kylinpy
如果遇到问题:
ERROR: Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-install-6qfdal_j/mysqlclient/
解决:yum install mysql-devel gcc gcc-devel python-devel
数据库 | 命令 | 连接方式 |
MySQL | pip install mysqlclient | mysql:// |
Postgres | pip install psycopg2 | postgresql+psycopg2:// |
Presto | pip install pyhive | presto:// |
Oracle | pip install cx_Oracle | oracle:// |
sqlite | sqlite:// | |
Redshift | pip install sqlalchemy-redshift | redshift+psycopg2:// |
MSSQL | pip install pymssql | mssql:// |
Impala | pip install impyla | impala:// |
SparkSQL | pip install pyhive | jdbc+hive:// |
kylin | pip install kylinpy | kylin://name:password@localhost:7070/XX |
虚拟环境在linux下未测试,注意路径即可。
该虚拟环境相当于独立的一套Python开发环境,对本地原生的python环境不会产生影响。
pip install virtualenv
在本地磁盘创建一个专门用于该开发环境的目录,尽量不出现中文就好。
这里采用d:\pycharm\myproject
cmd命令行下操作
d:
md pycharm
cd pycharm
md myproject
cd myproject
初始化环境并激活
在虚拟环境目录cmd下执行
virtualenv env
//等待初始化完成
env\Scripts\activate
//激活环境
deactivate
//退出环境
激活之后cmd命令行前会出现env字样,这样所有操作就在虚拟环境运行,不会影响本地。
安装vs2015 superset中依赖的库需要使用vs2015编译
安装sasl 通过 http://www.lfd.uci.edu/~gohlke/pythonlibs/#sasl 下载对应的版本。比如咱们安装的python 是3.6版本,系统是64位,就下载sasl-0.2.1-cp36-cp36m-win_amd64.whl
pip install D:\Downloads\sasl-0.2.1-cp36-cp36m-win_amd64.whl
pip install superset
linux中安装如果出现安装某个包卡死情况,处理如下:
(该目录根据个人环境而异)
1.root用户下编辑文件/usr/local/lib/python3.6/site-packages/setuptools/package_index.py;
2.修改之后的结果如下:
class PackageIndex(Environment):
"""A distribution index that scans web pages for download URLs"""
def __init__(
self, index_url="http://pypi.douban.com/simple", hosts=('*',),
ca_bundle=None, verify_ssl=True, *args, **kw
):
Environment.__init__(self,*args,**kw)
index_url = "http://pypi.douban.com/simple"
self.index_url = index_url + "/"[:not index_url.endswith('/')]
改完之后保存再次执行即可。
fabmanager create-admin --app superset
//创建管理员
如果报错 Was unable to import superset Error: cannot import name '_maybe_box_datetimelike' ......是因为安装的pandas版本问题,将现版本pandas卸载重新安装pandas
pip uninstall pandas
pip install pandas==0.23.4
重新安装之后 重新执行命令创建管理员。
如果报错 Was unable to import superset Error: No module named 'pysqlite2'
解决:pip install pysqlite3
然后重新编译安装Python 即可 make && sudo make altinstall
进入到虚拟环境目录libs\site-packages\superset\bin下
python superset db upgrade # 初始化数据库
如果报错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版本降级到1.2
pip uninstall SQLAlchemy
pip install SQLAlchemy==1.2
更改SQLAlchemy 版本后重新初始化数据库python superset db upgrad
python superset load_examples # 载入案例数据
python superset init # 初始化角色和权限
python superset runserver -d # 启动服务 端口号 8088,使用 -p 更改端口号
出现以下窗口即表示安装成功
chrome浏览器输入localhost:8088即可用创建的管理员账户密码登录。
番外:
将superset看板内嵌到其他web页面:
修改配置文件(更改权限)
修改superset中的config.py配置文件,将PUBLIC_ROLE_LIKE_GAMMA改为True
避免iframe跨站无法访问
修改superset中的config.py配置文件,HTTP_HEADERS = {}
回到superset首页
角色权限找到public给于以下权限