问答详情
源自:4-1 Presto简介

Presto连接数据源的性能问题

老师你好,我想请问一些Presto连接数据源的问题。

我这里尝试了presto连接PG数据库,做了简单的聚合尝试,比在PG中直接查询是慢的。

想请教一下,

  1. 是否需要数据源为Hive 或类似列存储格式的等特殊类型的数据源格式,presto才具有高性能的特点

  2. 测试pg和presto两台机器各自独立,采用公网IP访问,是否需要部署同一台测试,感觉如果jdbc协议走tcp的话,应该相差不大

  3. presto是否会缓存数据源的数据在内存中,第二次查询会更快?

  4. 测试数据为单表千万级数据,presto的单机是否存在性能瓶颈,8cores 28g ram,感觉影响不大

目前在摸索一些数据分析类的大数据工具,使用过Clickhouse,不知道老师是否了解


提问者:慕粉2040365749 2020-04-09 18:23

个回答

  • 叁金
    2020-04-10 13:59:53

    首先需要声明一点,presto本身是查询引擎,对于hive数据源的查询流程为读取metastore,然后读取hdfs上文件。 对于其他jdbc的数据源的读取流程为生成执行计划,下推执行计划,jdbc数据源执行查询,在presto端再进行聚合。

    所以依次回复你的问题:

    1. presto所具备的高性能,快速是相对的,在数据量较大,进行分布式查询,进行多个数据源的聚合查询等等操作

    2. 对于presto和pg的测试,我们可以简单这样理解,你通过presto对pg做简单查询=presto生成查询计划+pg查询自身,完全没有对比性

    3. presto不会缓存数据

    4. 单机presto发挥不出mpp架构的优势,只适合测试使用

    5. clickhouse我的了解也不多,和presto一样是mpp架构,ck对于数据存储、索引、查询等等方面都进行了优化。而presto对于数据存储这块主要是依赖列式存储格式orc以及parquet。

    希望能够对你有所帮助,有问题随时沟通~