superset(搭建篇)

superset躲坑小攥

  • superset简介
    • 使用原因
    • 本篇作用
    • 版本选择
    • windows本地环境
    • windows杂症
    • 离线安装

superset简介

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的新功能迭代可以支持更完美的分析能力,使用者还可进行斟酌。
根据本篇文章发布的时间节点,采用如下环境:

  1. python3.6
  2. superset - 0.28.1
  3. mysql 5.7 版本以上
    衍生问题 :
    1. superset默认使用sqlite进行初始化操作,根据大部分用户对mysql等轻量级数据库工 具的使用,可选用mysql进行初始化。
    2. 选用mysql,superset-0.28.1 可能会遇到索引长度过长等问题(Specified key was too long : max key),由于mysql5.5版本不支持过长索引,可提前准备高版本mysql。
    3. superset 0.28.1左右版本需要 python3以上才可以支持。提醒各位使用者合理调整python环境版本和superset版本的匹配,如果superset未来发展更好,最新版本请根据该套匹配进行环境升级测试(比如:python4.2 + superset 0.99.10)。
    4. 对于superset不太熟悉或者未观看其他文章博客的朋友,建议:根据当前互联网官网,国内外推出的superset博客,教程,进行学习和探索,综合评价后进行搭建使用,学习。
    5.同时:对于刚接触的朋友,superset 的下载提供以下两种
    ①到python官网:pypi,或者访问:https://pypi.org/ 下载相关包和依赖。
    ②访问github 下载各版本的superset资源:https://github.com/apache/incubator-superset

windows本地环境

目前采用windows10 版本进行环境搭建,由于local 环境具有互联网环境,可通过pip等形式进行依赖包下载。
可以通过一些网上不错的教程进行环境搭建,简单实用,本篇不提供该部分,而是尊重其他博主的劳动成果,提供相关链接,进行搭建操作,如遇到问题,欢迎随时回来!

以下提供两条链接,若有外网环境,可根据过程下载相关包和依赖,同时下载windows环境的相关必备条件等。

https://blog.csdn.net/folecld123/article/details/80705616

https://blog.51cto.com/jiangmengqin/2171512

(搭建采用虚拟环境virtualenv,主要目的是不影响本地原有的python环境,可以随意在虚拟环境中进行版本测试等操作)

windows杂症

问题1:superset(搭建篇)_第1张图片
需要Visual C++
解决方式:
https://blog.csdn.net/childbor/article/details/81286534
安装完成后解决该问题。

问题2:
superset(搭建篇)_第2张图片
该命令之后将会初始化数据库,友情提示,不要忘记初始化mysql。
解决方式:
sqlalchemy._compat 问题有可能是sqlalchemy包的缺少
可下载相关包:flask-SQLAlchemy

问题3:
superset(搭建篇)_第3张图片
该问题网上的解决办法是去掉“_”,去掉即可见效,如果有python专家,方便的话可以帮忙解答一下原因。
解决方式:
找到dataframe.py 文件 ,并更改当前文件下所有“_maybe_box_datetimelike” 为 “maybe_box_datetimelike”
superset(搭建篇)_第4张图片
问题4:
superset(搭建篇)_第5张图片

sqlalchemy版本过高容易出现问题,可以考虑降低sqlalchemy的版本。
解决方式:
将sqlalchemy的版本降低到1.2版本

问题5:
superset(搭建篇)_第6张图片
由于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下载源码包,然后进行安装。

感谢观看,如果能够给予您支持和帮助,深感荣幸。如有问题,请在评论处指出。

你可能感兴趣的:(环境部署,python)