2

caravel系列之安装与入门

 2 years ago
source link: http://wwj718.github.io/post/%E6%95%B0%E6%8D%AE/caravel-startup-and-install/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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用户可以轻松对数据进行可视化分析。

一图胜千言

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

demo尝试

demo

用户名/密码:test/test

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

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

# 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中配置如下

:::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

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK