从 0 到 1 学习 Presto,这一篇就够了_从0到1,学会presto(1)

本文详述了Presto的学习路径,包括数据模型、优缺点、与其他系统的比较,以及安装部署和使用优化。Presto作为内存计算引擎,其优点在于处理大规模数据的快速响应,支持跨数据源查询,但对内存需求高,不适合大量临时数据的连表查询。文章还介绍了Presto与Impala的性能比较,推荐了Presto的社区活跃版本PrestoSQL。此外,提供了详细的Presto安装配置步骤和优化策略,如合理设置分区、使用ORC格式和压缩,以及SQL查询的最佳实践。
摘要由CSDN通过智能技术生成

Worker 与 Coordinator、Worker 通信是通过 REST API

3)数据源

贯穿下文,你会看到一些术语:ConnectorCatelogSchemaTable。这些是 Presto 特定的数据源

  • Connector

Connector 是适配器,用于 Presto 和数据源(如 Hive、RDBMS)的连接。你可以认为 类似 JDBC 那样,但却是 Presto 的 SPI 的实现,使用标准的 API 来与不同的数据源交互。

Presto 有几个内建 Connector:JMX 的 Connector、System Connector(用于访问内建的 System table)、Hive 的 Connector、TPCH(用于 TPC-H 基准数据)。还有很多第三方的 Connector,所以 Presto 可以访问不同数据源的数据

每个 Catalog 都有一个特定的 Connector。如果你使用 catelog 配置文件,你会发现每个 文件都必须包含 connector.name 属性,用于指定 catelog 管理器(创建特定的 Connector 使用)。 一个或多个 catelog 用同样的 connector 是访问同样的数据库。例如,你有两个 Hive 集群。 你可以在一个 Presto 集群上配置两个 catelog,两个 catelog 都是用 Hive Connector,从而达 到可以查询两个 Hive 集群。

  • Catelog

一个 Catelog 包含 Schema 和 Connector 。例如,你配置JMX 的 catelog,通过JXM Connector 访问 JXM 信息。当你执行一条 SQL 语句时,可以同时运行在多个 catelog

Presto 处理 table 时,是通过表的完全限定(fully-qualified)名来找到 catelog。例如, 一个表的权限定名是 hive.test_data.test,则 test 是表名,test_data 是 schema,hive 是 catelog。

Catelog 的定义文件是在 Presto 的配置目录中。

  • Schema

Schema 是用于组织 table。把 catelog 和 schema 结合在一起来包含一组的表。当通过Presto 访问 hive 或 Mysq 时,一个 schema 会同时转为 hive 和 mysql 的同等概念。

  • Table

Table 跟关系型的表定义一样,但数据和表的映射是交给 Connector。

1.4 Presto 数据模型

1)Presto 采取三层表结构:

Catalog:对应某一类数据源,例如 Hive 的数据,或 MySql 的数据

Schema:对应 MySql 中的数据库

Table:对应 MySql 中的表

在这里插入图片描述
        2)Presto 的存储单元包括:

Page:多行数据的集合,包含多个列的数据,内部仅提供逻辑行,实际以列式存储。

Block:一列数据,根据不同类型的数据,通常采取不同的编码方式,了解这些编码方式,有助于自己的存储系统对接 presto。

在这里插入图片描述
        3)不同类型的 Block:

(1)Array 类型 Block,应用于固定宽度的类型,例如 int,long,double。block 由两部分组成:

  • boolean valueIsNull[] 表示每一行是否有值
  • T values[] 每一行的具体值

(2)可变宽度的 Block,应用于 String 类数据,由三部分信息组成

  • Slice:所有行的数据拼接起来的字符串
  • int offsets[]:每一行数据的起始偏移位置。每一行的长度等于下一行的起始偏移减去当 前行的起始偏移。
  • boolean valueIsNull[]: 表示某一行是否有值。如果有某一行无值,那么这一行的偏移量 等于上一行的偏移量。

(3)固定宽度的 String 类型的 block,所有行的数据拼接成一长串 Slice,每一行的长度固定

(4)字典 block:对于某些列,distinct 值较少,适合使用字典保存。主要有两部分组成:

字典,可以是任意一种类型的 block(甚至可以嵌套一个字典 block),block 中的每一行按照顺序排序编号。

int ids[]表示每一行数据对应的 value 在字典中的编号。在查找时,首先找到某一行的 id, 然后到字典中获取真实的值。

1.5 Presto 优缺点

学习一个新的框架,免不了来探讨一下它的优缺点:

通过下面一张图,我们来看看 Presto 中 SQL 运行过程:MapReduce vs Presto

在这里插入图片描述
        我们可以很明显地感受到,Presto 使用内存计算,减少与硬盘交互

1.5.1 优点

1)Presto 与 Hive 对比,都能够处理 PB 级别的海量

  • 17
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值