docker搭建superset搭建及其使用

简介

曾用名Caravel, Panoramix, 是由Airbnb(知名在线房屋短租公司)开源的数据分析与可视化平台, 该工具主要特点是可自助分析, 自定义仪表盘, 分析结果可视化(导出), 用户/角色权限控制, 还集成了一个SQL编辑器, 可以进行SQL编辑查询等。

安装

我使用docker进行安装, 本以为很简单, 中间还是遇到一些坑,总结如下:

1、首先安装docker

2、创建相关目录

mkdir /data/docker/volumes/superset/conf -p

mkdir /data/docker/volumes/superset/data -p

拉取镜像superset镜像

docker pull amancevice/superset:0.18.5

注:这一步可以省略,默认第三步会创建相关目录

3、创建容器

docker run -p 8088:8088 -v /data/docker/volumes/superset/conf:/etc/superset -v /data/docker/volumes/superset/data:/data --name superset -d amancevice/superset:0.18.5

4、使用配置文件

vi /data/docker/volumes/superset/conf/superset_config.py

输入内容

#---------------------------------------------------------

# 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

# you want to explore are managed directly in the web UI

SQLALCHEMY_DATABASE_URI = 'sqlite:////data/superset.db'

# Flask-WTF flag for CSRF

WTF_CSRF_ENABLED = True

SQLALCHEMY_TRACK_MODIFICATIONS = True

SQLALCHEMY_COMMIT_TEARDOWN = True

# Set this API key to enable Mapbox visualizations

MAPBOX_API_KEY = ''

加入

SQLALCHEMY_TRACK_MODIFICATIONS = True

SQLALCHEMY_COMMIT_TEARDOWN = True

是为了处理warning

UserWarning: SQLALCHEMY_TRACK_MODIFICATIONS adds significant overhead and will be disabled by default in the future. Set it to True to suppress this warning.

  warnings.warn('SQLALCHEMY_TRACK_MODIFICATIONS adds significant overhead and will be disabled by default in the future.  Set it to True to suppress this warning.')      

问题就出现在sqlite的路径上, sqlite默认存储在sqlite:////home/superset/.superset/superset.db, 我这里为了以后升级, 所以切换了存储路径, 这里有两种做法

1)直接将/home/superset/.superset/路径映射出来

2)将/home/superset/.superset/superset.db文件拷贝到/data目录

我这里选择的是第二种, 坑也在这, 使用

docker exec -it superset /bin/bash

cp /home/superset/.superset/superset.db /data   

失败, 发现没有权限, ls了一下才发现当前用户是非root用户, 而/data目录是root权限.

经过一番查找, 发现可以使用以下命令用root账号登陆容器

docker exec -u 0 -it superset /bin/bash

0号用户就是root用户, 剩下来的就简单了

mv /home/superset/.superset/superset.db /data

运行

ERROR:flask_appbuilder.security.sqla.manager:DB Creation and initialization failed: (sqlite3.OperationalError) unable to open database file (Background on this error at: http://sqlalche.me/e/e3q8)

百度了一下,错误有许多种,这里稍微列举一些

1)数据库路径最好写成绝对路径,并且目录要存在,而且 对目录要有读写的权限, 因为打开数据库的时候,会产生临时数据;

2)在Win 7 enterprise 和 Win Xp Pro上面写python v2.7时, 'C:\Users\Lux\Desktop\History' 路径 有时候要写成 'C:\\Users\\Lux\\Desktop\\History';

3)有种情况我也是无法解释的,某些时候你的数据库文件后缀名不是 db 也不行,需要改名为 xxx.db ;

4)对数据库文件要有读写的权限;

我遇到的是第一个情况,只需要数据目录授权即可,

cd /data/docker/volumes/superset/

chmod -R 777 data

5、退出容器, 重启容器, 然后进行用户初始化

docker restart superset

6、配置superset容器

设置用户名和密码(docker exec -it 容器ID fabmanager create-admin –app superset)

初始化数据库(docker exec -it 容器ID superset db upgrade)

superset初始化(docker exec -it 容器ID superset init)

开启superset服务(docker exec -it 容器ID superset runserver)

访问地址http://localhost:8088

配置数据源

docker搭建superset搭建及其使用_第1张图片
docker搭建superset搭建及其使用_第2张图片

注意连接mysql的时候一定要加charset=utf8, 要不然中文会显示乱码.

点击Test  Connection, 进行测试, 如果正常会显示"Seems OK!"

添加要展示的表

创建slice, 然后将创建好的slice加入到dashboard

我感觉这部分不难, 自己摸索摸索总归能够用起来, 我这里就不详细说了

多表展示

这里要特别强调一下如何显示多表的展示, 很多文章都说superset不支持多表, 只支持单表, 我刚开始也以为是这样, 后来发现这个方法可以进行基于多表的展示.

首先记得数据库配置里先勾选"Expose in SQL Lab", 要不然在SQL Lab中是找不到数据源的

Expose in SQL lab.png

docker搭建superset搭建及其使用_第3张图片

先执行一个语句, 注意查询结果中不要有相同的列, 如果有, 后续会提示错误

docker搭建superset搭建及其使用_第4张图片

点击"Query History", 选择Visualize

docker搭建superset搭建及其使用_第5张图片

勾中一个, 会有以下效果, 我基本都是用默认属性, 然后点击最下方按钮

docker搭建superset搭建及其使用_第6张图片

他会跳到slice的编辑页, 可以进行编辑, 其实他这个过程是创建了一个以查询为结果的临时表, 后续就是在这个临时表中做展示. 知道这个原理, 也可以通过直接添加表来进行操作, 只是操作流程不允许写入sql, 可以先添加, 然后再填入sql(我没尝试过, 应该行得通)

docker搭建superset搭建及其使用_第7张图片
docker搭建superset搭建及其使用_第8张图片

table detail.png

最终结果如下

docker搭建superset搭建及其使用_第9张图片

结语

文章写的有点啰嗦, 如果你有数据可视化的问题, 希望这篇文章能够给予你一定的帮助, 目前我观察下来, 这部分做的好的软件不多, 很多都是靠卖服务赚钱的, 比如数据观(人家做的真好, 其实挺鼓励使用人家的服务的, 如果没什么研发人员, 可以优先考虑使用), 希望这个软件可以满足老板的部分需求. 据说这里面的图表还可以嵌入到其他系统中, 没有仔细研究过, 不过这种不易调优的查询, 最好还是临时用用就好, 别嵌入到系统中, 稳定性和性能都不能有所保障.

最后还是附几张人家的图表截图吧

docker搭建superset搭建及其使用_第10张图片

spanshot1.png

docker搭建superset搭建及其使用_第11张图片
docker搭建superset搭建及其使用_第12张图片

你可能感兴趣的:(docker搭建superset搭建及其使用)