Erdong’ Blog

苦练七十二变,笑对八十一难。

0%

Superset 介绍及 docker 安装

人是视觉动物,要用数据把一个故事讲活,图表是必不可少的。如果你经常看到做数据分析同事,在SQL客户端里执行完查询,把结果复制/粘贴到Excel里再做成图表,那说明你的公司缺少一个可靠的数据可视化平台。数据可视化是Business Intelligence(简称BI)中的核心功能,有许多成熟的解决方案,例如今天要介绍的 Superset 。

Superset最初是由Airbnb的数据团队开源的,目前已进入Apache Incubator,算是明星级的开源项目。

特性

  • 一个直观的界面来探索和可视化数据集,并创建交互式仪表板。
  • 展示数据的一系列漂亮的可视化效果。
  • 简单、无代码的用户流可以深入挖掘、切分暴露仪表板下的数据。仪表盘和图表作为深入分析的起点。
  • SQL编辑器/IDE的一种状态,显示了丰富的元数据浏览器,以及从任何结果集中创建可视化的简单工作流。
  • 一个可扩展的、高粒度的安全模型,允许关于谁可以访问哪些产品特性和数据集的复杂规则。与主要身份验证后端(数据库、OpenID、LDAP、OAuth、REMOTE_USER、…)的集成
  • 一个轻量级语义层,允许通过定义维度和度量来控制数据源如何向用户公开
  • 大多数sql语言数据库的开箱即用支持
  • 与 Druid 的深度整合,允许超集保持快速,同时切片和切分大型实时数据集
  • 具有可配置缓存的快速加载仪表板

限制

一个 Superset SQLAlchemy 数据源只能是一个单个的表或者视图。
https://superset.incubator.apache.org/faq.html

支持的数据库

  • MySQL
  • Postgres
  • Vertica
  • Oracle
  • Microsoft SQL Server
  • SQLite
  • Greenplum
  • Firebird
  • MariaDB
  • Sybase
  • IBM DB2
  • Exasol
  • MonetDB
  • Snowflake
  • Redshift
  • Clickhouse

资料

安装

本次基于如下环境进行安装和使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 操作系统
CentOS Linux release 7.4.1708 (Core)
Linux 172-18-12-17 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
# docker version
Client:
Version: 18.06.1-ce
API version: 1.38
Go version: go1.10.3
Git commit: e68fc7a
Built: Tue Aug 21 17:23:03 2018
OS/Arch: linux/amd64
Experimental: false

Server:
Engine:
Version: 18.06.1-ce
API version: 1.38 (minimum version 1.12)
Go version: go1.10.3
Git commit: e68fc7a
Built: Tue Aug 21 17:25:29 2018
OS/Arch: linux/amd64
Experimental: false
# superset version
0.26.3

下载官方推荐的 docker 镜像

1
2
3
4
5
6
7
8
9
docker pull amancevice/superset:0.26.3
[root@hulk ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
amancevice/superset 0.26.3 7ddd79c685a7 9 days ago 923MB
```

## 启动 superset 镜像

建议事先准备好 superset 的配置文件和数据目录,

create config dir

mkdir /superset/conf

create data dir

mkdir /superset/data

start superset

docker run -d -p 8088:8088 -v /superset/conf:/etc/superset -v /superset/data:/var/lib/superset –name superset amancevice/superset:0.26.3

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

## 初始化 superset 镜像

``` bash
# 设定superset的用户名和密码
docker exec -it superset fabmanager create-admin --app superset
Username [admin]: ****
User first name [admin]: ****
User last name [user]: ****
Email [admin@fab.org]: ****
Password:
Repeat for confirmation:
Recognized Database Authentications.

# 初始化数据库
docker exec -it superset superset db upgrade
# 创建默认角色和许可
docker exec -it superset superset init
# 开启superset服务
docker exec -it superset superset runserver

使用浏览器登陆

打开宿主机上的浏览器,输入http://localhost:8088 用你刚刚创建的用户名进行登录即可。

迁移

备份数据

如果在启动时,数据目录是挂载出来的,那么可以忽略数据
如果数据目录是在 docker 容器内的,那么先把数据库文件拷出来,superset 官方默认使用 sqlite 数据库,该数据库可以直接拷贝数据库文件,如果使用了其他数据库请参照对应的数据库备份方法备份。

1
docker cp superset:/var/lib/superset/superset.db .

将superset.db 拷贝到新机器的/superset/data 目录下,数据备份完成。

启动服务

在新的机器上安装好 docker,实现 pull 好 superset 的镜像。执行下列命令启动就可以了。

1
docker run -d -p 8088:8088 -v /superset/conf:/etc/superset -v /superset/data:/var/lib/superset --name superset amancevice/superset:0.26.3

升级

与迁移类似,先备份数据,方式参考迁移的备份数据。

1
2
3
4
5
6
7
8
9
10
11
# Pull desired version
docker pull amancevice/superset:latest

# Remove the current container
docker rm -f superset

# Deploy a new container ...
docker run -d -p 8088:8088 -v /superset/conf:/etc/superset -v /superset/data:/var/lib/superset --name superset amancevice/superset:latest

# Upgrade the DB
docker exec superset-new superset db upgrade

参考资料

======================
Erdong, A Linux user !

坚持原创技术分享, 您的支持将鼓励我继续创作!