首页/数据/数据工程与 ETL 速查/Trino 交互式查询基础
管道基础52 条

Trino 交互式查询基础

Trino 是分布式 SQL 查询引擎,用 catalog 连接器对接 Hive、Iceberg、MySQL 等异构数据源,适合对湖上数据做交互式分析。

Trino 是什么

Trino 是分布式的 MPP SQL 查询引擎,本身不存数据,而是通过 catalog 连接器把 Hive、Iceberg、MySQL、Kafka 等异构数据源接入同一套 SQL 语义。它把「查询」和「存储」拆开:数据仍留在原处,Trino 只做并行读取与计算,因此特别适合对湖上数据做交互式分析,也适合把仓库表与业务库临时 join 起来查问题。代价是每次查询都要现读现算,没有本地缓存兜底。

基本信息

定位多数据源联邦查询,不存储数据
cataloghive / iceberg / mysql 等连接器命名空间
三层命名catalog.schema.table
调用方式trino CLI、JDBC、BI 工具
配置位置协调节点上的连接器配置文件,按 catalog 名称命名
适用场景交互式探索、临时分析、跨源报表

CLI 查询示例

CLI 查询示例
trino --server http://trino-coordinator:8080 \
      --catalog hive --schema dwd \
      --execute "SELECT channel, count(*) FROM orders WHERE dt='2026-10-11' GROUP BY channel;"
trino --server http://trino-coordinator:8080 --catalog system --execute "SHOW CATALOGS;"

# 交互模式下的常用语句
#   SHOW SCHEMAS FROM hive;
#   EXPLAIN (TYPE DISTRIBUTED) SELECT ...;   -- 看查询计划再决定是否全跑

典型使用场景

  • 湖上即席分析:对 Iceberg、Hive 表做交互式查询,不用等 Spark 作业排队
  • 跨源关联:把数仓宽表与 MySQL 维表放在一条 SQL 里 join
  • 报表查询:BI 工具通过 JDBC 连 Trino,避免直接压业务库
  • 数据核查:临时抽查某个分区的行数与空值比例
  • 轻量 ETL:把查询结果 CTAS 到目标表,替代部分小批量加工
  • 配额管控:通过资源组给不同团队划分查询额度,避免个别大查询挤占集群

常用操作读法

操作作用注意
SHOW CATALOGS列出已配置的数据源表不可见时先查这里
SHOW SCHEMAS列出库/命名空间需要指定 catalog
EXPLAIN查看查询计划先看是否发生全表扫描
DESCRIBE查看表结构确认分区列与类型
查询超时/内存报错资源组或单查询上限触发缩小范围或申请更大资源组
大基数组聚合、超宽 join 容易触发查询内存上限;注意拆分查询或调大资源组限制。
Trino 读取的是外部数据源的元数据与文件,表的统计信息不新鲜时优化器可能选错连接顺序;重要查询执行前先看 EXPLAIN 输出。

易错点

  • catalog 未配置对应连接器时表不可见,先 SHOW CATALOGS 确认范围
  • 对 Hive 表反复全表扫描会打满 HDFS/对象存储带宽,喂给 Trino 的查询同样要带分区条件
  • 把 Trino 当数据库写业务数据,缺少事务与高频小写入能力
  • 多条大查询同时提交,资源组没做隔离导致互相抢占
  • 依赖过期统计信息优化连接顺序,遇到超大表 join 小表时性能骤降

数据来源与参考

  • Trino 官方文档:Command Line Interface 与 Connectors
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌