跳到主要内容

Presto/Trino

问题

什么是 Presto/Trino?和 Hive 有什么区别?

答案

简介

Presto(现已更名 Trino)是一个 **MPP(大规模并行处理)**查询引擎,提供秒级交互式查询。

对比Presto/TrinoHive
延迟秒~分钟分钟~小时
计算模型内存 PipelineMapReduce
存储不自带,查询外部HDFS
特色跨数据源查询大规模 ETL

跨源查询

Presto/Trino 的核心优势是连接多个数据源统一查询

-- 跨数据源 JOIN:Hive 表 + MySQL 表
SELECT
h.user_id,
h.total_amount,
m.username,
m.phone
FROM hive.dws.user_order_summary h
JOIN mysql.prod.users m ON h.user_id = m.user_id
WHERE h.dt = '2024-01-15';

支持的数据源:Hive、MySQL、PostgreSQL、MongoDB、Elasticsearch、Kafka、Redis 等。

适用场景

场景是否适合原因
即席查询 / Ad-hoc秒级响应
BI 看板查询低延迟
跨源关联核心优势
大规模 ETL内存限制
流式计算不支持
数据分析师使用建议
  • 日常 Ad-hoc 分析首选 Trino(比 Hive 快很多)
  • BI 工具(Superset/Metabase)连接 Trino 做即席分析
  • 大批量 ETL 仍然用 Hive/Spark

常见面试问题

Q1: Presto 和 Trino 是什么关系?

答案

  • Presto 是 Facebook 开源的查询引擎
  • 核心团队离开后创建了 Trino(原名 PrestoSQL)
  • 两者功能类似,Trino 是更活跃的社区版本

Q2: Presto/Trino 查询慢怎么优化?

答案

  1. 减少扫描的数据量(加分区过滤)
  2. 使用 ORC/Parquet 格式
  3. 避免大表 JOIN 大表
  4. 增加 Worker 节点
  5. 使用 EXPLAIN 查看执行计划

相关链接