前言
公司最近在用[superset][6]自己尝试着安装配置了一下环境,特意写一个博客记录一下,以后忘了自己可以看看,也希望可以帮到有需要的人。 注意!本次环境是在ubuntu下搭建的。
superset简介
Apache Superset是一个现代化的企业级商业智能Web应用程序
特征
1.丰富的数据可视化集
2.一个易于使用的界面,用于探索和可视化数据
3.创建和共享仪表板
4.通过与主要认证提供程序(数据库,OpenID,LDAP,OAuth和REMOTE_USER通过Flask AppBuilder)集成的企业级身份验证
5.可扩展,高粒度的安全/权限模型,允许复杂的规则可以访问个别功能和数据集
6.一个简单的语义层,允许用户通过定义哪些字段应显示在哪个下拉菜单中以及哪些聚合和功能度量可用于用户来控制数据源在UI中的显示方式
7.通过sqlAlchemy与大多数sql语言的RDBMS集成
8.与Druid.io深度整合安装依赖
sudo apt - get install build - essential libssl - dev libffi - dev python - dev python - pip libsasl2 - dev libldap2 - dev
这是直接从官方文档copy过来的,superset后台是用python写的所以需要一个python的环境,ubuntu一般会自带一个python,不过版本比较低,superset不支持2.6,我下的一个3.6.2是可以用的,自己下载一个安装包,解压之后
1. sudo ./configure
2. sudo make
3. sudo make install
- 安装 virtualenv
virtualenv这个东西我也不是很清楚,目前的理解就相当于一个虚拟环境吧,在虚拟环境里可以自由选择python的版本
pip install virtualenv
- 创建虚拟环境
virtualenv venv --python=pythonxx
venv 这个名字随便取pythonxx写自己的python版本对应的执行文件名
- 激活虚拟环境
. ./venv/bin/activate
/venv/和你去取得名字对应即可,要推出虚拟环境使用deactivate命令
- 安装一些工具
pip install --upgrade setuptools pip
好吧,这个我也不知道是什么,pip好像是管理python的一个工具
- 安装superset
# Install superset
pip install superset
# Create an admin user (you will be prompted to set 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 # Start the web server on port 8088,use -p to bind to another port superset runserver # To start a development web server,use the -d switch # superset runserver -d
这是官方的做法,但是!我们在国内,下载速度几十K,不忍直视,这里用阿里镜像速度快N倍
sudo -H pip install superset -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com
不用谢,安装完按上述步骤执行到superset runserver 后,用浏览器访问你服务器的8088端口,就可以看到登陆界面。此时看到的一个数据是superset为了演示实现准备的。下面界面怎么连我们自己的数据库
配置连接数据库
这里我连的是自己的MysqL数据库,其他数据库大同小异
1.安装客户端
在虚拟环境下运行
pip -install MysqLclient
这里有时候会出现一个错误
OSError: MysqL_config not found
apt-get install libMysqLclient-dev python3-dev
解决方法如上!
接下来编写配置文件
#---------------------------------------------------------
# Superset specific config
#---------------------------------------------------------
ROW_LIMIT = 5000
SUPERSET_WORKERS = 4
SUPERSET_WEBSERVER_PORT = 8088
#---------------------------------------------------------
#---------------------------------------------------------
# Flask App Builder configuration
#---------------------------------------------------------
# Your App secret key
SECRET_KEY = '\2\1thisismyscretkey\1\2\e\y\y\h'
# The sqlAlchemy connection string to your database backend
# This connection defines the path to the database that stores your
# superset Metadata (slices,connections,tables,dashboards,...).
# Note that the connection information to connect to the datasources
# 这里写MysqL的连接信息,superset会在这个数据库创建一些自己需要用到的表比如有关权限的7张表
sqlALCHEMY_DATABASE_URI = 'MysqL://用户名:密码@路径/数据库名字?chartset=utf8'
# Flask-WTF flag for CSRF
WTF_CSRF_ENABLED = True
# Add endpoints that need to be exempt from CSRF protection
WTF_CSRF_EXEMPT_LIST = []
# Set this API key to enable MapBox visualizations
MAPBox_API_KEY = ''
最后在把这个配置文件(superset_config.py)放入venv的bin目录即可。
我在用虚拟机连接我本机数据库的时候,一致显示加载配置文件,搞了半天原来是本机防火墙的原因,关掉之后就可以连接了。配置文件那块,有些字符被自动转成中文的了,复制的时候要注意一下