caravel

caravel是什么

Caravel is an open source data visualization platform that provides easy exploration of your data and allows you to create and share beautiful charts and dashboards

caravel是Airbnb开源的一款数据可视化和探索工具,使用caravel用户可以轻松对数据进行可视化分析。

一图胜千言

使用场景

  • 数据库可视化分析
  • 数据模式套索
  • BI
  • 数据报表与可视化图表
  • tableau的开源替代

功能特性

  • 丰富的可视化组件(集成最优秀的可视化图表库)
  • 创建和分享数据可视化互动仪表盘
  • 灵活的权限模型, 方面控制数据的可见度
  • 方便企业使用的用户验证机制,支持 database, OpenID, LDAP, OAuth和 REMOTE_USER (通过 Flask AppBuilder)
  • 简洁的语义层,可以控制数据资源在 UI 的展现方式
  • 通过SqlAlchemy可接入大多数据库
  • 与 Druid.io 的深度集成,可以方便处理大规模数据集

demo尝试

demo

用户名/密码:test/test

安装

根据官方文档,caravel目前只支持python2.7,将来会支持python3

我们在此演示Ubuntu下的安装,其他系统可以参考官方文档

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# OS dependencies
sudo apt-get install build-essential libssl-dev libffi-dev python-dev python-pip

# create virtual env and use it
sudo pip virtualenv -i http://mirrors.aliyun.com/pypi/simple/
virtualenv caravel_env
. caravel_env/bin/activate

# Install caravel
pip install caravel # 推荐使用anaconda

# Create an admin user
fabmanager create-admin --app caravel

# Initialize the database
caravel db upgrade

# Create default roles and permissions
caravel init

# Load some data to play with
caravel load_examples

# Start the web server on port 8088
caravel runserver -p 8088

# To start a development web server, use the -d switch
caravel runserver -d #建议使用tmux来跑,默认可通过0.0.0.0:8088访问

如果你熟悉docker,你可以使用docker安装

使用docker安装

docker run --name caravel -d -p 8088:8088 amancevice/caravel,之后docker exec -it caravel demo,初始化用户 ,细节参考 dockerhub amancevice/caravel

caravel被映射到本地的8088端口,之后可以用nginx反向代理把它映射出去,nginx中配置如下

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
:::text
server {
        listen 80;             #端口
        server_name caravel.just4fun.site;   #访问域名
        access_log /tmp/access.log;
        error_log /tmp/access.log;
        location / {
                proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $http_host;
                proxy_redirect off;
                if (!-f $request_filename) {
                        proxy_pass http://127.0.0.1:8088;  
                        break;
                }
        }
}

支持的数据源

目前通过相关的python驱动支持大多主流数据仓库:

相关依赖和更多细节可以参考官方文档:Database dependencies,或者sqlalchemy的文档:Engine Configuration

其中Presto,Redshift和Impala可能需要做个介绍.

Presto

Distributed SQL query engine for big data

通过PyHive,我们能用sqlalchemy操作presto数据库,这样依赖我们就可以解决海量数据的SQL查询问题,presto支持PB级别的查询

Redshift

Amazon Redshift 是一种可轻松扩展的完全托管型 PB 级数据仓库服务i

Impala

Lightning-fast, distributed SQL queries for petabytes of data stored in Apache Hadoop clusters

分布式大数据SQL查询

如果我们的数据仓库存储海量的数据,直接查询数据库是低效的,caravel已经与Druid.io深度整合.对于大数据集可以采用Druid.io或是以上的解决方案

原理

这部分直接引用@lxw1234的这篇文章

Caravel通过将界面的操作转换成SQL语句,提交给SQLAlchemy适配数据源查询并返回结果,对于Druid,Caravel将界面的操作转换成Druid的API进行查询并返回结果,与Druid的深度集成,可以实现大规模海量数据的OLAP分析和实时探索。

另外,为了提高并发查询下的性能,还支持数据缓存,可配置将数据缓存至Redis、Memcache或者本地文件系统。

登录问题

  • 新建用户无法登录,后端会说权限不够,无提示信息.猜测是用户系统尚未启用.目前是用fabmanager(Flask App Builder)后创建的的admin

参考