Superset搭建及其简单使用 - 简书


本站和网页 https://www.jianshu.com/p/a6fe79d0b1b3 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

Superset搭建及其简单使用 - 简书登录注册写文章首页下载APP会员IT技术Superset搭建及其简单使用一根弦的风筝关注赞赏支持Superset搭建及其简单使用背景
老板一直反馈说我们给不了他想要的, 关键每次他想要的都不一样, 每实现一个新功能, 他就想要一堆相关的信息, 我要将这些信息都给他做成网页, 用图表展示出来, 各种维度搜索, 这还不得累死这帮开发小伙伴. 所以对于他这种需求, 我基本都予以回绝, 坚决不做. 不过口头说不做, 也深知老板不容易, 他要的信息也不过分, 其实就是要一些数据统计罢啦, 经过一些调研, 一些数据分析部门的朋友建议我用tableau, 我也玩了玩, 功能相当强大, 不过有两个问题:
单机软件
这种图表总归是希望可以在线查看, 手机查看最完美
付费软件
不便宜
所以我就一直在寻找开源在线的解决方案, 最开始打算使用grafana, 后来发现他对时序支持比较好, 对于表查询的展示好像怪怪的, 就放弃了. 终于在某天在一个偶然的机会, 发现了Superset这个开源项目. 好东西. 于是乎有了今天的分享
简介
曾用名Caravel, Panoramix, 是由Airbnb(知名在线房屋短租公司)开源的数据分析与可视化平台, 该工具主要特点是可自助分析, 自定义仪表盘, 分析结果可视化(导出), 用户/角色权限控制, 还集成了一个SQL编辑器, 可以进行SQL编辑查询等。
安装
我使用docker进行安装, 本以为很简单, 中间还是遇到一些坑.
首先安装docker
创建相关目录
mkdir /dockerfs/superset/conf -p
mkdir /dockerfs/superset/data -p
创建容器
docker run -p 8088:8088 -v /dockerfs/superset/conf:/etc/superset -v mkdir /dockerfs/superset/data:/data --name superset -d amancevice/superset:0.18.5
使用配置文件
vi /dockerfs/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
# Set this API key to enable Mapbox visualizations
MAPBOX_API_KEY = ''
问题就出现在sqlite的路径上, sqlite默认存储在sqlite:////home/superset/.superset/superset.db, 我这里为了以后升级, 所以切换了存储路径, 这里有两种做法
直接将/home/superset/.superset/路径映射出来
将/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
退出容器, 重启容器, 然后进行用户初始化
docker restart superset
docker exec -it superset superset-init
init pwd.png
打开浏览器, 键入地址, 可以使用起来了
login.png
dashboard.png
使用
配置数据源
datasources.png
connection.png
注意 连接mysql的时候一定要加charset=utf8, 要不然中文会显示乱码.
点击Test Connection, 进行测试, 如果正常会显示"Seems OK!"
添加要展示的表
创建slice, 然后将创建好的slice加入到dashboard
我感觉这部分不难, 自己摸索摸索总归能够用起来, 我这里就不详细说了
多表展示
这里要特别强调一下如何显示多表的展示, 很多文章都说superset不支持多表, 只支持单表, 我刚开始也以为是这样, 后来发现这个方法可以进行基于多表的展示.
首先记得数据库配置里先勾选"Expose in SQL Lab", 要不然在SQL Lab中是找不到数据源的
Expose in SQL lab.png
SQL lab.png
先执行一个语句, 注意查询结果中不要有相同的列, 如果有, 后续会提示错误
query.png
点击"Query History", 选择Visualize
Visualize.png
勾中一个, 会有以下效果, 我基本都是用默认属性, 然后点击最下方按钮
modify.png
他会跳到slice的编辑页, 可以进行编辑, 其实他这个过程是创建了一个以查询为结果的临时表, 后续就是在这个临时表中做展示. 知道这个原理, 也可以通过直接添加表来进行操作, 只是操作流程不允许写入sql, 可以先添加, 然后再填入sql(我没尝试过, 应该行得通)
table list.png
table detail.png
最终结果如下
result.png
结语
文章写的有点啰嗦, 如果你有数据可视化的问题, 希望这篇文章能够给予你一定的帮助, 目前我观察下来, 这部分做的好的软件不多, 很多都是靠卖服务赚钱的, 比如数据观(人家做的真好, 其实挺鼓励使用人家的服务的, 如果没什么研发人员, 可以优先考虑使用), 希望这个软件可以满足老板的部分需求. 据说这里面的图表还可以嵌入到其他系统中, 没有仔细研究过, 不过这种不易调优的查询, 最好还是临时用用就好, 别嵌入到系统中, 稳定性和性能都不能有所保障.
最后还是附几张人家的图表截图吧
spanshot1.png
spanshot2.png
spanshot3.png
推荐阅读更多精彩内容[3/4]我所经历的大数据平台发展史(三):互联网时代 • 上篇//我所经历的大数据平台发展史(三):互联网时代 • 上篇http://www.infoq.com/cn/arti...葡萄喃喃呓语阅读 50,165评论 4赞 201Android - 收藏集 Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...passiontim阅读 166,961评论 24赞 704Apache Spark 2.2.0 中文文档 - Spark SQL, DataFrames...Spark SQL, DataFrames and Datasets Guide Overview SQL Dat...草里有只羊阅读 17,783评论 0赞 8561/70火辣的武汉之行提到武汉,就想到了全国四大火炉之一,想到了池莉作品中那个热气腾腾的城市,想到了闻名全国的周黑鸭,香辣鸭脖。印象中,...清冷的月光阅读 184评论 11赞 9Python 多线程我们前面提到了进程是由若干线程组成的,一个进程至少有一个线程。多线程优点: 在一个进程中的多线程和主线程分享相同的...第八共同体阅读 399评论 0赞 0这是一件福利超多的事儿算算日子从开始写文章到现在已经一个半月了,一共才发布了十五篇,并且质量参差不齐,在微众号上推送的同时也在简书上面发...王七蛋阅读 154评论 3赞 2不可能的人当你发现那个人依然被你念念不忘,然而你却无法追赶上他的脚步,周围的人都觉得你和他不是一个世界的人,而你更是觉得他是...一个充满正能量的小太阳阅读 211评论 0赞 1评论18赞4949赞50赞赞赏更多好文