Apache DolphinScheduler Trino 数据源接入指南:参数配置、JDBC 连接原理与插件激活
【免费下载链接】dolphinschedulerApache DolphinScheduler is the modern data orchestration platform. Agile to create high performance workflow with low-code项目地址: https://gitcode.com/GitHub_Trending/dol/dolphinscheduler
本指南基于 Apache DolphinScheduler 当前仓库中的 Trino 数据源官方文档(docs/docs/en/guide/datasource/trino.md),系统讲解在 DolphinScheduler 中创建 Trino 数据源所需的全部表单参数、TRINO 驱动与 JDBC URL 的组装原理、底层连接通道实现,以及如何在伪集群(pseudo-cluster)部署下激活该数据源插件。读完本文,你将能够独立完成 Trino 数据源的新建、连通性测试、上线使用,并理解插件在数据源 SPI 体系中的加载与运行机制。
一、Trino 数据源是什么
Trino(原 PrestoSQL)是一个分布式 SQL 查询引擎,支持跨异构数据源进行联邦查询。在 DolphinScheduler 中,Trino 被纳入数据源中心(Datasource)的统一管理体系:用户只需在界面上配置一次连接信息,后续编写 SQL 类任务(如 SQL 任务节点)时即可直接引用该数据源,而无需在任务中重复填写主机、端口、用户名与密码。
Trino 数据源在整个 DolphinScheduler 中由独立的数据源插件模块承载,位于仓库的 dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-trino 目录,模块名为dolphinscheduler-datasource-trino,其 Maven 插件名称为datasource.trino(见 pom.xml)。该插件通过 SPI 机制注册到数据源 API 层,供 API 服务端与任务执行端统一调用。
二、数据源参数说明(表单逐项解析)
在 DolphinScheduler Web UI 中,进入数据源中心页面,点击新建数据源并选择TRINO类型,即可看到如下表单字段(截图即为该表单的真实界面):
| 表单字段 | 说明 |
|---|---|
| 数据源类型(Datasource) | 下拉框中选择TRINO |
| 数据源名称(Datasource Name) | 输入数据源名称,必填项,任务中通过该名称引用数据源 |
| 描述(Description) | 输入数据源描述,可选填 |
| IP/主机名(IP/Host Name) | 输入 Trino 服务的 IP 或主机名,必填 |
| 端口(Port) | 输入 Trino 服务端口,必填。Trino 协调器(Coordinator)默认 HTTP 端口为 8080,截图示例中表单默认展示 8000,请以你的实际服务端口为准 |
| 用户名(Username) | 设置连接 Trino 的用户名,必填 |
| 密码(Password) | 设置连接 Trino 的密码,必填 |
| 数据库名(Database Name) | 输入要连接的 Trino Catalog 下的数据库(Schema)名称,必填 |
| JDBC 连接参数(jdbc connect parameters) | 用于 Trino 连接的参数设置,以 JSON 格式填写,可选填 |
| 数据源定义(Datasource Definition) | 定义该数据源是测试数据源(Test data source)还是线上数据源(Online data source) |
注意:表单中带红色星号(*)的字段为必填项;底部提供Test Connect(测试连接)、Confirm(确认)、Cancel(取消)三个操作按钮,其中Test Connect可在保存前立即验证配置是否正确。
2.1 各字段在源码中的落点
上述表单字段与数据源插件的 DTO 一一对应。在 TrinoDataSourceParamDTO.java 中,参数对象包含name(数据源名称)、note(描述)、host(主机)、port(端口)、database(数据库名)、userName(用户名)与other(JDBC 连接参数)等字段,并通过getType()返回DbType.TRINO标识自身类型。
其中JDBC 连接参数字段在提交时以 JSON 字符串形式传入,例如{"SSL":"true","SSLKeyStorePath":"/home/dolphinscheduler/trino.jks","SSLKeyStorePassword":"******"}。从测试用例 TrinoDataSourceProcessorTest.java#L97-L107 可以看到,checkDatasourceParam会校验此类参数并通过,可用于配置 Trino 的 SSL 认证等高级连接选项。
三、底层实现:JDBC URL 组装与连接管理
Trino 数据源插件遵循 DolphinScheduler 数据源 SPI 的设计:每个数据源类型由DataSourceProcessor(参数与连接处理)、DataSourceChannel(连接通道)及对应的 Client 组成。
3.1 连接参数处理:TrinoDataSourceProcessor
TrinoDataSourceProcessor.java 是 Trino 数据源的核心处理类,它通过@AutoService(DataSourceProcessor.class)注册到数据源 SPI 中,主要职责包括:
组装 JDBC 地址与 URL:
createConnectionParams方法将表单的 host、port、database 拼接为标准的 Trino JDBC 连接串:String address = String.format("%s%s:%s", DataSourceConstants.JDBC_TRINO, TrinoParam.getHost(), TrinoParam.getPort()); String jdbcUrl = address + "/" + TrinoParam.getDatabase();其中
JDBC_TRINO的取值为jdbc:trino://(见 DataSourceConstants.java)。因此,在主机localhost:8080、数据库default的场景下,最终生成的 JDBC URL 为jdbc:trino://localhost:8080/default——这与测试用例 TrinoDataSourceProcessorTest.java#L40-L57 中断言的结果完全一致。加载驱动类:
getDatasourceDriver()返回io.trino.jdbc.TrinoDriver,即 Trino 官方 JDBC 驱动(见 DataSourceConstants.java#L39);驱动依赖io.trino:trino-jdbc由插件自身的 pom.xml 声明。连通性校验:
getValidationQuery()返回select 1(见 DataSourceConstants.java#L88),用于连接池创建连接时的探活校验,对应界面上的Test Connect功能。密码加密存储:保存时通过
PasswordUtils.encodePassword加密密码,读取连接时通过PasswordUtils.decodePassword解密,避免明文密码直接入库(见 TrinoDataSourceProcessor.java#L76-L84 与 #L115-L124)。JDBC 参数拼接:
getJdbcUrl会把表单中填写的 JSON 格式 JDBC 连接参数转换为key=value形式并用&连接,作为 URL 的 query 参数附加到 JDBC URL 之后;transformOther方法完成了这一转换(见 TrinoDataSourceProcessor.java#L105-L112 与 #L142-L149)。例如 JSON 中的{"SSL":"true"}最终会拼入 URL 形成...?SSL=true。SQL 切分与注释去除:
splitAndRemoveComment使用 Druid 的 SQL 解析能力(com.alibaba.druid.DbType.trino)去除 SQL 注释并按 TRINO 方言切分多语句 SQL(见 TrinoDataSourceProcessor.java#L136-L140),这保证 SQL 任务节点中多语句脚本能够被正确逐条执行。
3.2 连接通道:TrinoDataSourceChannel
TrinoDataSourceChannel.java 实现DataSourceChannel接口,提供两类客户端:
TrinoAdHocDataSourceClient:即席(Ad Hoc)连接客户端,适用于临时性、一次性执行的查询;TrinoPooledDataSourceClient:连接池客户端,适用于需要频繁复用连接的任务执行场景。
连接参数实体TrinoConnectionParam继承BaseConnectionParam,完整封装了 user、address、database、jdbcUrl、driverClassName、validationQuery 与 other 等属性(见 TrinoConnectionParam.java),通过createDatasourceParamDTO可以将已保存的连接 JSON 反解析回表单 DTO,支持数据源信息的回显与编辑。
四、是否原生支持与插件激活
官方结论:不支持原生(预置)依赖。从版本 3.3.0 开始,DolphinScheduler 二进制发行包不再内置各数据源插件的第三方依赖,需要使用者按需手动下载激活。详见 pseudo-cluster 部署文档 的 “Download Plugins Dependencies” 章节。
如果跳过此步骤直接使用 Trino 数据源,服务启动或测试连接时通常会抛出ClassNotFoundException(例如找不到io.trino.jdbc.TrinoDriver)。
4.1 一键脚本安装插件依赖
在 DolphinScheduler 安装目录下执行仓库提供的安装脚本 script/install-plugins.sh,即可从 Maven 中央仓库下载所需插件依赖包:
bash ./bin/install-plugins.sh 3.3.0该脚本会读取conf/plugins_config配置文件(仓库中的示例见 config/plugins_config),按配置清单逐个下载插件。其循环读取逻辑位于 install-plugins.sh#L61(done < ${DOLPHINSCHEDULER_HOME}/conf/plugins_config)。
4.2 按需裁剪:只激活 Trino 数据源
通常无需安装全部连接器插件,可通过修改conf/plugins_config只保留所需插件。以仅启用dolphinscheduler-datasource-trino为例,将配置文件调整为:
--datasource-plugins-- dolphinscheduler-datasource-trino --end--注意:插件依赖包通常不包含在二进制发行包中。若启动服务或测试连接时出现
ClassNotFoundException,请优先检查对应数据源类型的插件依赖是否已下载。例如dolphinscheduler-datasource-mysql不包含mysql-connector-java.jar,同理 Trino 数据源需要确保trino-jdbc驱动随插件一并就位。
五、创建与验证数据源
- 使用管理员账号登录 DolphinScheduler Web UI,进入数据源中心;
- 点击创建数据源,类型选择TRINO;
- 按第二节参数表填写主机、端口、用户名、密码、数据库名(Catalog 下的 Schema),必要时以 JSON 填写 JDBC 连接参数;
- 在数据源定义中选择测试数据源或线上数据源,测试阶段建议先选择测试数据源,验证通过后再切换为线上数据源;
- 点击Test Connect验证连通性——后台会加载
io.trino.jdbc.TrinoDriver并执行探活查询select 1(DataSourceConstants.java#L88); - 测试通过后点击Confirm保存。
保存后的数据源即被持久化,SQL 类任务节点可在配置中直接选择该 Trino 数据源执行查询。若测试连接失败,请依次检查:插件依赖是否已按第四章安装、Trino 服务端口与防火墙是否放行、用户名密码与数据库名是否正确、JDBC 连接参数(如 SSL 配置)是否匹配 Trino 服务端的安全设置。
六、小结
| 维度 | 关键信息 |
|---|---|
| 支持状态 | 非原生预置,需按 pseudo-cluster 部署文档 下载插件依赖 |
| JDBC URL 格式 | jdbc:trino://<host>:<port>/<database>,JDBC 参数以?key=value&...追加 |
| 驱动类 | io.trino.jdbc.TrinoDriver |
| 探活语句 | select 1 |
| 连接类型 | 即席连接(AdHoc)与连接池(Pooled)双通道 |
| 插件模块 | dolphinscheduler-datasource-trino(Maven 插件名datasource.trino) |
按照本文步骤完成插件激活与表单配置后,DolphinScheduler 即可稳定接入 Trino,为联邦查询类 SQL 任务提供统一、可复用的数据源管理能力。
【免费下载链接】dolphinschedulerApache DolphinScheduler is the modern data orchestration platform. Agile to create high performance workflow with low-code项目地址: https://gitcode.com/GitHub_Trending/dol/dolphinscheduler
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考