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

配置数据源

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

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

添加要展示的表

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

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

多表展示

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

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

Expose in SQL lab.png

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

点击"Query History", 选择Visualize

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

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

table detail.png

最终结果如下

结语

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

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

spanshot1.png

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,056评论 5 474
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,842评论 2 378
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,938评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,296评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,292评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,413评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,824评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,493评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,686评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,502评论 2 318
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,553评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,281评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,820评论 3 305
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,873评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,109评论 1 258
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,699评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,257评论 2 341

推荐阅读更多精彩内容