2024年Presto【基础 01】简介+架构+数据源+数据模型(2),2024年最新一线互联网公司面经总结

学习路线:

这个方向初期比较容易入门一些,掌握一些基本技术,拿起各种现成的工具就可以开黑了。不过,要想从脚本小子变成黑客大神,这个方向越往后,需要学习和掌握的东西就会越来越多以下是网络渗透需要学习的内容:
在这里插入图片描述

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以点击这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

2.3 数据源

Presto特定的数据源:Connector、Catalog、Schema 和 Table。

  1. Connector n. 连接器,连接头
  • 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。如果使用 Catalog 配置文件,每个文件都必须包含connector.name 属性,用于指定 Catalog 管理器(创建特定的 Connector 使用)。一个或多个 Catalog 用同样的 connector 是访问同样的数据库。例如,有两个Hive集群。可以在一个 Presto 集群上配置两个 Catalog,两个 Catalog 都是用 Hive Connector,从而达到可以查询两个 Hive 集群的目的。
  1. Catalog n. [图情][计]目录;登记
  • 一个 Catalog 包含 Schema 和 Connector。例如,配置 JMX 的 Catalog,通过 JXM Connector 访问 JXM 信息。当执行一条SQL语句时,可以同时运行在多个 Catalog。
  • Presto 处理 table 时,是通过表的完全限定(fully-qualified)名来找到 Catalog。例如,一个表的权限定名是 hive.test_data.test,则 test 是表名,test_data 是 Schema,Hive 是 Catalog。
  • Catalog 的定义文件是在 Presto 的配置目录中。
  1. Schema n. [计][心理] 模式;计划;图解;概要
  • Schema 是用于组织 table。当通过 Presto 访问 Hive 或 MySQL 时,一个 Schema 会同时转为 Hive 或 MySQL 的同等概念。
  1. Table
  • Table 跟关系型的表定义一样,但数据和表的映射是交给 Connector。
2.4 数据模型

1)Presto 的三层表结构

  • Catalog:对应某一类数据源,例如 Hive 的数据,或 MySQL 的数据。
  • Schema:对应特定数据源中的数据库。
  • Table:对应特定数据库中的表。

在这里插入图片描述

2)Presto 的存储单元

  • Page:多行数据的集合,包含多个列的数据,内部仅提供逻辑行,实际以列式存储。
  • Block:一列数据,根据不同类型的数据,通常采取不同的编码方式,了解这些编码方式,有助于自己的存储系统对接 Presto。

在这里插入图片描述

3)不同类型的Block

  • Array 类型的,应用于固定宽度的类型,例如 int,long,double。Block 由两部分组成:
  1. boolean valueIsNull[] 表示每一行是否有值。
  2. T values[] 每一行的具体值。
  • 可变宽度的,应用于 String 类数据,由三部分信息组成
  1. Slice:所有行的数据拼接起来的字符串。
  2. int offsets[]:每一行数据的起始便宜位置。每一行的长度等于下一行的起始便宜减去当前行的起始便宜。
  3. boolean valueIsNull[] 表示某一行是否有值。如果有某一行无值,那么这一行的便宜量等于上一行的偏移量。
  • 固定宽度的String类型的,所有行的数据拼接成一长串Slice,每一行的长度固定。
  • 字典:对于某些列,distinct 值较少,适合使用字典保存。主要有两部分组成:
  1. 字典,可以是任意一种类型的 block(甚至可以嵌套一个字典block),block 中的每一行按照顺序排序编号。
  2. int ids[]表示每一行数据对应的 value 在字典中的编号。在查找时,首先找到某一行的id,然后到字典中获取真实的值。

3. 特点

3.1 与MapReduce对比

Presto 中 SQL 运行过程与 MapReduce 对比:
在这里插入图片描述

所有阶段均采用管道连接,无需等待时间,无需容错系统,内存到内存数据传输,无需磁盘IO,数据块必须适合内存。

给大家的福利

零基础入门

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

同时每个成长路线对应的板块都有配套的视频提供:

在这里插入图片描述

因篇幅有限,仅展示部分资料

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以点击这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 24
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值