老师你好,我想请问一些Presto连接数据源的问题。
我这里尝试了presto连接PG数据库,做了简单的聚合尝试,比在PG中直接查询是慢的。
想请教一下,
是否需要数据源为Hive 或类似列存储格式的等特殊类型的数据源格式,presto才具有高性能的特点
测试pg和presto两台机器各自独立,采用公网IP访问,是否需要部署同一台测试,感觉如果jdbc协议走tcp的话,应该相差不大
presto是否会缓存数据源的数据在内存中,第二次查询会更快?
测试数据为单表千万级数据,presto的单机是否存在性能瓶颈,8cores 28g ram,感觉影响不大
目前在摸索一些数据分析类的大数据工具,使用过Clickhouse,不知道老师是否了解
首先需要声明一点,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。
希望能够对你有所帮助,有问题随时沟通~