Trino / Presto:交互式 SQL 查询引擎

Trino 和 Presto 面向交互式 SQL 查询,通过 MPP 架构和 Connector 机制查询 Hive、Iceberg、MySQL、Kafka 等多种数据源。

Trino / Presto:交互式 SQL 查询引擎

Spark 适合大批量 ETL,Flink 适合实时计算。那如果用户想对数据湖、Hive、MySQL、Kafka 做交互式 SQL 查询,Trino/Presto 就很常见。

Trino 的关键词是 MPP、Connector、联邦查询和交互式分析。

Rendering diagram...

Coordinator 和 Worker

Coordinator 负责解析 SQL、生成查询计划、调度任务。

Worker 负责执行任务,读取数据源,进行计算和交换数据。

Connector

Connector 是 Trino 的核心扩展机制。通过 Connector,Trino 可以把不同数据源映射成 Catalog、Schema、Table。

这也是 Trino 能做联邦查询的原因。

SELECT o.order_id, u.name
FROM hive.dw.orders o
JOIN mysql.crm.users u
ON o.user_id = u.id;

这条 SQL 可以跨 Hive 和 MySQL 查询,但生产中要注意数据量和跨源 Join 成本。

Trino 和 Spark SQL 的差异

Trino 更适合交互式查询,不适合长时间复杂 ETL。

Spark SQL 更适合大规模批处理、数据改写和 ETL 作业。

小结

Trino/Presto 是查询层,不是通用 ETL 引擎。它适合让用户快速查询多种数据源,也适合做数据湖上的交互式 SQL。

参考链接