大数据之Presto


前言

本文简单介绍了大数据中Presto的相关知识,包括Presto的基本概念、架构、特点以及使用Presto的注意事项


一、Presto概念

  Presto是一个开源的分布式SQL查询引擎,适用于交互式分析查询,数据量支持GB到PB字节。

  注意:虽然Presto可以解析SQL,但它不是一个标准的数据库。不是MySQL、PostgreSQL或者Oracle的代替品,也不能用来处理在线事务(OLTP)

二、Presto架构

在这里插入图片描述
  Presto的客户端将SQL命令发送给协调者coordinator,coordinator将SQL指令转化为Presto可以识别的计算任务并将其分发给worker;worker来执行这个任务,每一个worker执行一部分任务。

  Catalog是presto支持的数据源,一个数据源就是一个catalog,图中有三个数据源,hive,kafka,Redis;在配置每一个数据源时,都要定义一个对应的connector,并且在presto中的数据结构都是固定的(schema – database ,table – 表);所以presto可以做到多数据源的连表查询,因为它将数据结构统一了。

三、特点

3.1 优点

(1)Presto是基于内存运算,减少没必要的硬盘IO,所以更快。

(2)能够连接多个数据源,跨数据源连表查,如从Hive查询大量网站访问记录,然后从Mysql中匹配出设备信息。

3.2 缺点

(1)虽然能够处理PB级别的海量数据分析,但不是代表Presto把PB级别都放在内存中计算的。而是根据场景,如count,avg等聚合运算,是边读数据边计算,再清内存,再读数据再计算,这种耗的内存并不高。但是连表查,就可能产生大量的临时数据,因此速度会变慢,反而hive此时会更擅长。

(2)为了达到实时查询,可能会想到用它直连MySql来操作查询,这效率并不会提升,瓶颈依然在MySql,此时还引入网络瓶颈,所以会比原本直接操作数据库要慢。

四、注意事项

(1)能用分区字段进行过滤尽量用分区字段进行过滤;
  比如要取某一天的数据,用creat_time字段也可以过滤,但是这样会对整个表进行扫描,不如用分区字段进行过滤;

(2)使用groupby时,如果后面有多个属性列,要将基数大的列放在前面;

(3)使用join语句时,大表在左,小表在右;即大表分段,小表广播(将小表广播到每一个worker上,将大表分为几段,每一段一个worker,这样也可以实现join操作)

(4)不支持insert overwrite,只能先delete表,再insert into;

(5)时间比较时,mysql将时间当做字符串进行比较,但是在presto中,不可以,要加上timestamp标记
代码如下:

select * from table1 where t > '2021-11-23 00:00:00';

//Presto中的写法
select * from table1 where t > timestamp  '2021-11-23 00:00:00';

总结

本文简单介绍了大数据中Presto的相关知识,包括Presto的基本概念、架构、特点以及使用Presto的注意事项,如果有不足之处或者表述不当的地方欢迎大家指正

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值