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。