❤️❤️❤️❤️❤️❤️ 我们已经正式推出微信小程序,在微信中搜索 TrendForge Pro 即可使用小程序,如果使用 Telegram 请搜索 trendforge_tg ❤️❤️❤️❤️❤️❤️

学习路径指南
难度等级
中级
预计时长
2-3天
适合人群
有一定Java基础,对大数据技术感兴趣,希望了解分布式查询引擎工作原理的开发者、数据工程师或数据分析师。

学习目标:能够理解Trino的基本架构,在本地成功构建并运行一个开发/测试版本的Trino服务器,并使用CLI执行简单的SQL查询。

前置知识

Java编程基础 熟悉

Trino项目使用Java编写,理解Java语法、面向对象概念和基本的Maven项目结构是阅读和运行代码的基础。

Maven基础 了解

Trino使用Maven进行构建和依赖管理,需要了解如何使用Maven命令(如clean, install)来编译项目。

SQL基础 熟悉

Trino是一个SQL查询引擎,了解基本的SQL语法(如SELECT, FROM, WHERE)是使用和测试它的前提。

命令行操作 了解

需要在终端执行构建命令、运行CLI等操作。

Docker基础 了解 (可选)

项目构建可能需要Docker环境(根据README),用于某些测试或依赖。

学习步骤

1

环境准备与项目初探

2-3小时

检查并安装必要软件

根据README,确保你的系统(Mac OS X或Linux)满足要求:安装Java 25.0.1+(64位)、Docker,并确保SELinux等不影响源码目录写入。如果是Apple Silicon Mac,需安装Rosetta 2。

可以使用 `java -version` 和 `docker --version` 命令来验证安装。

克隆项目到本地

使用Git将Trino项目克隆到本地:`git clone https://github.com/trinodb/trino.git`,然后进入项目根目录。

浏览项目结构

在IDE(推荐IntelliJ IDEA)中打开项目,或直接在文件系统中查看。重点了解核心模块如 `trino-main` (主服务器)、`trino-spi` (服务提供者接口)、`trino-cli` (命令行客户端)以及各个connector模块(如`trino-tpch`)。

2

首次构建项目

1-2小时(取决于网速)

执行Maven构建

在项目根目录下,运行README中提供的命令:`./mvnw clean install -DskipTests`。这个命令会下载所有依赖并编译项目,跳过耗时的测试。

首次构建会下载大量依赖到 `~/.m2/repository`,请保持网络通畅。后续构建会快很多。

验证构建结果

构建成功后,可以在各模块的 `target` 目录下找到生成的JAR文件。例如,CLI可执行JAR的路径为 `client/trino-cli/target/trino-cli-*-executable.jar`。

3

在IDE中运行与体验

3-4小时

配置IDE项目

在IntelliJ IDEA中,确保项目SDK配置为JDK 25,项目语言级别设置为25。

运行测试服务器(最简单方式)

在IDE中找到并运行 `TpchQueryRunner` 类(通常在 `trino-tpch` 模块中)。这会在本地启动一个集成了TPCH连接器的Trino开发服务器。注意可能需要添加VM选项 `--add-modules jdk.incubator.vector`。

这是快速验证服务器能否启动并运行查询的最便捷方法。

使用CLI连接并查询

在终端中,导航到 `client/trino-cli/target` 目录,运行 `java -jar trino-cli-*-executable.jar` 启动CLI。默认会连接到本地运行的 `TpchQueryRunner` 服务器。尝试执行README中的示例查询:`SELECT * FROM tpch.tiny.region;` 和 `SELECT * FROM system.runtime.nodes;`。

如果CLI连接失败,检查服务器是否正在运行,以及CLI的默认连接参数(如端口)是否与服务器匹配。

4

运行完整开发服务器

1-2小时

配置并运行DevelopmentServer

在IDE中创建一个运行配置:主类为 `io.trino.server.DevelopmentServer`;VM选项参考README或对应模块pom.xml中的 `air.test.jvm.additional-arguments` 属性(通常包含 `--add-modules jdk.incubator.vector`);工作目录设置为 `$MODULEDIR$`(自动指向 `trino-server-dev` 模块目录);使用 `trino-server-dev` 模块的类路径。然后运行此配置。

`DevelopmentServer` 使用了 `testing/trino-server-dev/etc` 下的配置文件,你可以在这里修改 `config.properties` 和 catalog配置。

探索插件与Catalog配置

查看 `trino-server-dev` 模块下的 `config.properties` 文件,理解 `plugin.bundles` 如何指定插件。在 `testing/trino-server-dev/etc/catalog` 目录下查看或创建连接器的属性文件(如 `tpch.properties`)。尝试修改配置,重启服务器观察变化。

推荐资源

Trino User Manual 必看

官方用户手册,包含部署、配置、连接器使用、SQL语法等最全面的信息。

DEVELOPMENT 文档 推荐

项目内的DEVELOPMENT文件,包含开发流程、代码风格和插件实现指南,是参与贡献的必读材料。

CONTRIBUTING 文档 可选

项目贡献指南,说明了提交代码的要求和流程。

Trino Slack / GitHub Discussions 推荐

遇到问题时,可以在这里向社区提问或搜索历史讨论。

学习路径常见错误

1

Java版本不匹配

严格使用Java 25.0.1+(64位)。使用 `java -version` 确认版本和位数,并在IDE中正确配置项目SDK。

2

构建时内存不足或超时

首次构建依赖下载量大且耗时,确保网络稳定。可以考虑为Maven设置更大的堆空间(如 `MAVEN_OPTS=-Xmx2g`)或在网络条件好时进行。

3

运行 `TpchQueryRunner` 或 `DevelopmentServer` 时缺少VM参数

务必添加 `--add-modules jdk.incubator.vector` 参数。其他必要参数请参考对应模块 `pom.xml` 中的 `air.test.jvm.additional-arguments` 属性。

4

CLI连接服务器失败

首先确认服务器已成功启动(查看日志无错误)。确认CLI连接的地址和端口(默认 `localhost:8080`)与服务器监听地址一致。检查是否有防火墙或端口冲突。

5

修改配置后服务器行为未改变

确保修改的是正确的配置文件(`trino-server-dev` 模块下的配置文件)。修改后需要完全重启服务器,而不仅是重新运行main方法(在IDE中停止再启动)。

学习路径下一步步骤

1. 深入阅读一个连接器(如`trino-tpch`或`trino-hive`)的源码,理解SPI接口如何被实现。 2. 尝试实现一个简单的自定义函数(UDF)或连接器插件。 3. 学习如何配置一个多节点的Trino集群进行测试。 4. 阅读查询执行计划,了解Trino如何解析、优化和执行SQL。 5. 关注项目GitHub的Issues和Pull Requests,尝试解决一个简单的Good First Issue。

助手