Superset 是一款由 Airbnb 开源的“现代化的企业级 BI(商业智能) Web 应用程序”,其通过创建和分享 dashboard,为数据分析提供了轻量级的数据查询和可视化方案。
Superset 的前端主要用到了 React 和 NVD3/D3,而后端则基于 Python 的 Flask 框架和 Pandas、SQLAlchemy 等依赖库,主要提供了这几方面的功能:
集成数据查询功能,支持多种数据库,包括 MySQL、PostgresSQL、Oracle、SQL Server、SQLite、SparkSQL 等,并深度支持 Druid。
通过 NVD3/D3 预定义了多种可视化图表,满足大部分的数据展示功能。如果还有其他需求,也可以自开发更多的图表类型,或者嵌入其他的 JavaScript 图表库(如 HighCharts、ECharts)。
提供细粒度安全模型,可以在功能层面和数据层面进行访问控制。支持多种鉴权方式(如数据库、OpenID、LDAP、OAuth、REMOTE_USER 等)。
Superset 的搭建与使用非常简单,只需要一些 Python 基础,下面先从创建虚拟环境开始。
由于公司最新一步计划,选用一套大数据可视化分析工具,开源的superset成为了本次选型目标。将会采用kylin作为大数据计算引擎,并通过配合superset进行BI分析工作。
目前superset的搭建相关资料互联网上已经比较齐全,官方的python源码,python能力要求不是很高,故不会细致的写出整个过程,本文会重点解决一些大众遇到的问题,但其他文章试用效果不明显等情况。同时对于内网部署superset进行一部分总结,以供内网部署需求使用。
由于superset版本在不断升级,网上建议python使用2.7版本较为稳定,原因是Airbnb采用该版本。但是根据时间的推移,superset的新功能迭代可以支持更完美的分析能力,使用者还可进行斟酌。
根据本篇文章发布的时间节点,采用如下环境:
目前采用windows10 版本进行环境搭建,由于local 环境具有互联网环境,可通过pip等形式进行依赖包下载。
可以通过一些网上不错的教程进行环境搭建,简单实用,本篇不提供该部分,而是尊重其他博主的劳动成果,提供相关链接,进行搭建操作,如遇到问题,欢迎随时回来!
以下提供两条链接,若有外网环境,可根据过程下载相关包和依赖,同时下载windows环境的相关必备条件等。
https://blog.csdn.net/folecld123/article/details/80705616
https://blog.51cto.com/jiangmengqin/2171512
(搭建采用虚拟环境virtualenv,主要目的是不影响本地原有的python环境,可以随意在虚拟环境中进行版本测试等操作)
问题1:
需要Visual C++
解决方式:
https://blog.csdn.net/childbor/article/details/81286534
安装完成后解决该问题。
问题2:
该命令之后将会初始化数据库,友情提示,不要忘记初始化mysql。
解决方式:
sqlalchemy._compat 问题有可能是sqlalchemy包的缺少
可下载相关包:flask-SQLAlchemy
问题3:
该问题网上的解决办法是去掉“_”,去掉即可见效,如果有python专家,方便的话可以帮忙解答一下原因。
解决方式:
找到dataframe.py 文件 ,并更改当前文件下所有“_maybe_box_datetimelike” 为 “maybe_box_datetimelike”
问题4:
sqlalchemy版本过高容易出现问题,可以考虑降低sqlalchemy的版本。
解决方式:
将sqlalchemy的版本降低到1.2版本
问题5:
由于mysql5.5版本不支持过长索引.
解决方法:
推荐:部署前确定安装相关版本的mysql,mysql5.7以上版本
问题6
module" object has no attribute ‘SIGALRM’
这又是由于 Windows 环境下依赖包不兼容导致的 —— Python 的 signal 包只作用于 Linux 和 Mac ,在 Windows 下不启作用。
解决方法:
找到superset下的utils.py文件,注释signal相关,换成pass。(注意格式)
def __enter__(self):
try:
pass
#signal.signal(signal.SIGALRM, self.handle_timeout)
#signal.alarm(self.seconds)
except ValueError as e:
logging.warning("timeout can't be used in the current context")
logging.exception(e)
def __exit__(self, type, value, traceback):
try:
pass
#signal.alarm(0)
except ValueError as e:
logging.warning("timeout can't be used in the current context")
logging.exception(e)
由于不同需求,可能需要部署到生产环境,引申出以下问题:
1.由于您部署的superset可能处于内网环境,所以需要相关依赖和python包,如支持外网,可通过命令下载获取。
2.部署linux环境需要准备什么环境。
3.所需包版本和兼容。
4.部署过程中容易出现哪些问题。
首先,已发现其他博主提供的相关资料,确定了相关包版本等问题。
在线安装:
https://blog.csdn.net/csdn_dcl/article/details/80804430
离线安装:
https://blog.csdn.net/sunsiyuan521/article/details/78119832
在线安装可以根据未来版本的衍生发展,搭配优化度较高的版本。
离线安装由于版本迭代问题,可能需要契合度更高的版本兼容匹配策略
以下为相关版本:
CentOS6.4
python3.6
superset - 0.28.1
mysql 5.7 版本以上
离线环境需要安装:
pip-7.1.2.tar.gz
setuptools-18.2.tar.gz
仍需要virtualenv虚拟环境,同时提供superset相关依赖包,以下包根据“离线安装”博客提供的资料进行升级版配套,时间节点为2019年04月01日前后,若使用新版本,可在此基础上调节superset以及相关依赖版本。
superset及相关依赖包:
alembic-1.0.8
amqp-2.4.2
anyjson-0.3.3
asn1crypto-0.24.0
Babel-2.6.0
backports.ssl_match_hostname-3.7.0.1
billiard-3.6.0.0
bleach-3.1.0
boto3-1.4.7
botocore-1.7.0
cchardet-1.0.0
celery-4.3.0
certifi-2019.3.9
cffi-1.12.0
chardet-3.0.4
click-6.7
colorama-0.3.9
configparser-3.5.0
contextlib2-0.5.5
cryptography-1.7
defusedxml-0.5.0
docutils-0.14
enum34-1.1.6
et_xmlfile-1.0.1
Flask-0.12.4
Flask-1.0.2
Flask-AppBuilder-1.12.5
Flask-Babel-0.11.1
Flask-Babel-0.12.2
Flask-Cache-0.13.1
Flask-Caching-1.7.0
Flask-Compress-1.4.0
Flask-Login-0.4.1
Flask-Migrate-2.4.0
Flask-OpenID-1.2.5
Flask-Script-2.0.6
Flask-SQLAlchemy-2.3.2
Flask-Testing-0.7.1
Flask-WTF-0.14.2
flower-0.9.3
future-0.16.0
future-0.17.1
futures-3.2.0
geographiclib-1.49
geopy-1.19.0
gunicorn-19.9.0
humanize-0.5.1
idna-2.8
ijson-2.0
ipaddress-1.0.22
isodate-0.5.4
itsdangerous-1.1.0
jdcal-1.4
Jinja2-2.10
jmespath-0.9.4
jsonlines-1.1.0
jsonschema-2.5.0
kombu-4.5.0
kylinpy-2.3.0
libffi-3.2.1
linear-tsv-1.0.0
Mako-1.0.8
markdown2-2.3.7
Markdown-3.0
MarkupSafe-1.1.1
mysqlclient-1.3.12
mysqlclient-1.4.2.post1
MySQL-python-1.2.5
numpy-1.16.2
openpyxl-2.4.0
pandas-0.24.2
parsedatetime-2.4
pathlib2-2.3.3
polyline-1.3.2
pyasn1-0.1.8
pycparser-2.19
pydruid-0.5.2
PyHive-0.6.1
PyJWT-1.7.1
pytest-runner-4.4
python3-openid-3.1.0
python-dateutil-2.8.0
python-editor-1.0.4
python-geohash-0.8.5
python-openid3-2.2.6
pytz-2018.9
PyYAML-3.11
requests-2.21.0
rfc3986-1.1.0
s3transfer-0.1.10
sasl-0.2.1
setuptools_scm-3.2.0
simplejson-3.16.0
six-1.12.0
SQLAlchemy-1.2.0
SQLAlchemy-Utils-0.33.11
sqlparse-0.3.0
superset-0.28.1
tableschema-1.3.3
tabulator-1.18.0
thrift-0.11.0
thrift_sasl-0.3.0
tornado-4.2.1
typedef-0.9.0.7
unicodecsv-0.14.1
Unidecode-0.04.21
urllib3-1.24.1
vcversioner-2.16.0.0
vine-1.3.0
webencodings-0.5.1
Werkzeug-0.15.1
wheel-0.33.1
WTForms-2.2.1
xlrd-1.0.0
可在官方 http://pipy.org下载源码包,然后进行安装。
感谢观看,如果能够给予您支持和帮助,深感荣幸。如有问题,请在评论处指出。