在查询引擎层面,Presto 与 Hive 存在哪些核心差异?它们各自的优势分别体现在哪些方面?
考察说明
考查对 Presto 与 Hive 查询引擎架构和适用场景的区分能力。
回答思路
- 【回答框架 1】Presto 是一个分布式 SQL 查询引擎,采用内存计算和 MPP(大规模并行处理)架构,查询时数据流经内存,不写中间结果到磁盘;Hive 基于 MapReduce 或 Tez 等批处理框架,将 SQL 转换为多阶段任务,中间结果通常落盘。
- 【回答框架 2】Presto 的优势在于低延迟交互式查询,适合 Ad-Hoc 分析、多数据源联邦查询,如同时查询 Hive、MySQL、Kafka 等;Hive 的优势在于高吞吐、稳定处理超大规模数据,适合离线 ETL 和批量报表,且对资源要求更宽松。
- 【回答框架 3】两者主要差异体现在执行模型:Presto 是流水线式内存执行,Hive 是阶段式批处理;Presto 不支持细粒度容错,查询失败需重跑,而 Hive 任务可重试单个阶段。
- 【回答框架 4】适用场景上,Presto 面向分析师快速探查数据,Hive 面向数据工程师的定期批处理任务;实际生产常结合使用,Presto 查询 Hive 表数据,利用 Hive 元数据。
- 【关键点 1】Presto 使用内存流水线执行,低延迟;Hive 使用磁盘批处理,高吞吐。
- 【关键点 2】Presto 支持跨数据源联邦查询,Hive 主要处理 HDFS 和 Hive 表。
- 【关键点 3】Hive 容错性更好,任务失败可部分重试;Presto 更依赖内存,大查询可能 OOM。
- 【易错点 1】不能认为 Presto 一定比 Hive 快,对超大 Join 或 shuffle 操作 Hive 可能更稳定。
- 【易错点 2】Presto 不执行事务和更新操作,主要面向查询。