presto使用初探

前言 presto使用第一感觉: 真是快啊,百万数据秒级出结果
presto 文档: https://prestodb.io/docs/current/
参考文章https://blog.csdn.net/zhangmary/article/details/80287530

1 presto是什么:
是Facebook的开源的,完全基于内存的并⾏计算,分布式SQL交互式查询引擎
是一种大规模并行处理(MPP)架构,多节点管道式执行
⽀持任意数据源(通过扩展式连接器组件),数据规模GB〜PB级
使用的技术,如向量计算,动态编译执行计划,优化的ORC和Parquet Reader等
presto不太支持存储过程,支持部分标准SQL
presto的查询速度比hive快5-10倍
适合:PB级海量数据复杂分析,交互式SQL查询,⽀持跨数据源查询
不适合:多个大表的连接操作,因为急是基于内存的,多张大表在内存里可能放不下

2 presto和hive的对比
参考文章https://blog.csdn.net/zhangmary/article/details/80287530
hive是一个数据仓库,是一个交互式比较弱一点的查询引擎,交互式没有似的那么强,而且只能访问HDFS的数据

Presto是一个交互式查询引擎,可以在很短的时间内返回查询结果,秒级,分钟级,能访问很多数据源
Presto是一个分布式SQL查询引擎,它被设计为用来专门进行高速,实时的数据分析。
hive在查询的100Gb的级别的数据时,消耗时间已经是分钟级了

但是presto是取代不了hive的,因为p全部的数据都是在内存中,限制了在内存中的数据集大小,比如多个大表的连接,这些大表是不能完全放进内存的,实际应用中,对于在Presto的查询是有一定规定条件的,比比如说一个查询在急查询超过30分钟,那就杀掉吧,说明不适合在Presto上使用,主要原因是,查询过大的话,会占用整个集群的资源,这会导致你后续的查询是没有资源进行查询的,这跟Presto的设计理念是冲突的,就像是你进行一个查询,但是要等个5分钟才有资源继续查询,这是很不合理的,交互式就变得弱了很多

Presto的实现和Hive有着本质的不同:
Hive是把一个查询转化成多个stage的MapReduce的任务,然后一个接一个执行。执行的中间结果通过对磁盘的读写来同步。然而,Presto没有使用MapReduce,它是通过一个定制的查询和执行引擎来完成的。它的所有的查询处理是在内存中,这也是它的性能很高的一个主要原因。所以在日常使用中,如果有大量的连接偶尔会发生内存不足的报错,一个常见的解决方法是生成中间表的方式来减少加入的次数。

3 presto使用注意
(1) apply_no as “申请编号” ,其中别名使用的是双引号
(2) 数据类型不会隐式转换,需要手动cast( nums as int)
(3) SQL脚本最后不能使用分号
(4) SQL脚本不能使用tab键

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值