Apache DolphinScheduler 接入 DolphinDB 数据源:从界面配置到插件激活的完整实战指南
2026/9/14 11:49:37 网站建设 项目流程

Apache DolphinScheduler 接入 DolphinDB 数据源:从界面配置到插件激活的完整实战指南

【免费下载链接】dolphinschedulerApache DolphinScheduler is the modern data orchestration platform. Agile to create high performance workflow with low-code项目地址: https://gitcode.com/GitHub_Trending/dol/dolphinscheduler

DolphinDB 是一款面向时序数据的高性能分布式数据库,常被用于量化金融、物联网等高频数据场景。在 Apache DolphinScheduler 中,你可以通过内置的dolphinscheduler-datasource-dolphindb插件将 DolphinDB 注册为数据源,供 SQL 类任务、数据导入导出等编排流程复用连接信息。本文基于官方文档与仓库源码,完整讲解 DolphinDB 数据源的创建步骤、每个字段的含义与底层映射逻辑,以及如何从 3.3.0 版本开始手动下载并激活该插件,帮助你一次配置、随处复用,快速打通 DolphinDB 与 DolphinScheduler 的调度链路。

一、在 DolphinScheduler UI 中创建 DolphinDB 数据源

登录 DolphinScheduler 后,进入「数据源中心」页面,点击「创建数据源」,在数据源类型下拉框中选择DOLPHINDB,即可看到如下表单。各字段的含义如下:

字段说明
Datasource(数据源类型)选择DOLPHINDB
Datasource Name(数据源名称)为该数据源命名,名称在同一租户下应保持唯一,后续任务中通过该名称引用连接
Description(描述)可选,填写该数据源的用途、负责人等备注信息
IP/Host Name(IP/主机名)DolphinDB 服务的 IP 或主机名
Port(端口)DolphinDB 服务的端口,DolphinDB 默认端口为8848
Username(用户名)连接 DolphinDB 的用户名,例如 DolphinDB 默认管理员admin
Password(密码)对应用户名的密码
JDBC connection parameters(JDBC 连接参数)DolphinDB 连接的参数设置,以JSON 格式填写,非必填

填写完成后点击「测试连接」,成功后保存即可。从源码结构看,前端表单收集的正是 DolphinDBDataSourceParamDTO 中定义的一组属性——namenote(描述)、hostportuserNamepasswordother(JDBC 连接参数),后端校验与持久化都围绕这份 DTO 展开。

1.1 端口与连接串的自动生成逻辑

在界面中填写主机与端口后,DolphinScheduler 会自动拼接 JDBC 连接串,无需手工输入。对应逻辑位于 DolphinDBDataSourceProcessor.createConnectionParams():

String address = String.format("%s%s:%s", DataSourceConstants.JDBC_DOLPHINDB, dolphinDBParam.getHost(), dolphinDBParam.getPort()); String jdbcUrl = String.format("%s", address);

其中JDBC_DOLPHINDB定义在 DataSourceConstants 中,值为jdbc:dolphindb://。也就是说,当填写主机localhost、端口8848时,实际生成的连接地址为jdbc:dolphindb://localhost:8848。该逻辑同时被单元测试覆盖(见 DolphinDBDataSourceProcessorTest),测试断言addressjdbcUrl均为jdbc:dolphindb://localhost:8848,可作为排查问题的基准。

二、JDBC 连接参数(JSON 格式)详解

「JDBC connection parameters」字段接收一段JSON 对象,用于透传额外的 JDBC 连接属性,例如时区、连接超时等。它在源码中对应 DTO 的other属性,并在最终拼接到 JDBC URL 上。拼接逻辑位于 DolphinDBDataSourceProcessor.getJdbcUrl() 与 transformOther():

@Override public String getJdbcUrl(ConnectionParam connectionParam) { DolphinDBConnectionParam dolphinDBConnectionParam = (DolphinDBConnectionParam) connectionParam; if (MapUtils.isNotEmpty(dolphinDBConnectionParam.getOther())) { return String.format("%s?%s", dolphinDBConnectionParam.getJdbcUrl(), transformOther(dolphinDBConnectionParam.getOther())); } return dolphinDBConnectionParam.getJdbcUrl(); } private String transformOther(Map<String, String> otherMap) { ... otherMap.forEach((key, value) -> list.add(String.format("%s=%s", key, value))); return String.join("&", list); }

由此可见:若填写了 JSON 参数,最终 JDBC URL 会变成jdbc:dolphindb://host:port?k1=v1&k2=v2的形式,每个 JSON 键值对以&连接拼入 URL。典型示例如下:

{ "serverTimezone": "utc" }

该示例在插件测试 testCreateConnectionParams 中出现,说明serverTimezone是常见的可配置项。你可以按需补充 DolphinDB JDBC 驱动支持的其他连接属性(如读取超时、启用 SSL 等),具体取值范围以所使用的 DolphinDB JDBC 驱动版本为准。

2.1 密码的存储与还原

出于安全考虑,数据源保存时密码并不会明文落库。在createConnectionParams()中,密码通过PasswordUtils.encodePassword()进行加密存储;建立真实连接时,则通过PasswordUtils.decodePassword()还原,见 DolphinDBDataSourceProcessor.getConnection()。整个连接创建流程由JdbcDriverConnectionProvider完成:加载驱动类、拼接带参数的 JDBC URL、传入用户名与解密后的密码,最终返回java.sql.Connection

三、插件激活:DolphinDB 数据源并非开箱即用

原文档明确指出,DolphinDB 数据源不在默认内置支持范围之内(Native Supported: No)。从 3.3.0 版本开始,DolphinScheduler 的二进制发行包不再打包任何插件依赖,需要用户自行下载激活。若跳过此步骤直接创建/测试连接,通常会抛出ClassNotFoundException(例如找不到com.dolphindb.jdbc.Driver)。

3.1 使用 install-plugins.sh 安装插件依赖

推荐的方式是执行官方脚本一键安装,详见伪集群部署文档的 Download Plugins Dependencies 一节:

bash ./bin/install-plugins.sh 3.3.0

install-plugins.sh位于仓库 script/install-plugins.sh,它会根据conf/plugins_config中声明的插件清单,从 Maven 中央仓库拉取对应的插件依赖包。通常我们并不需要全部连接器插件,只保留需要的即可。例如仅需 DolphinDB 数据源时,可在conf/plugins_config--datasource-plugins--段中保留并添加:

--datasource-plugins-- dolphinscheduler-datasource-dolphindb --end--

仓库自带的 config/plugins_config 中已默认收录dolphinscheduler-datasource-dolphindb,实际部署时按需精简清单即可。关于脚本更详细的用法,可参考 dolphinscheduler-daemon.sh 与 install-plugins.sh 的实现说明。

3.2 驱动坐标与驱动类

DolphinDB 数据源插件的 Maven 依赖坐标(声明于 dolphinscheduler-datasource-dolphindb/pom.xml):

  • GroupId:com.dolphindb
  • ArtifactId:jdbc
  • 版本:3.00.3.0

对应的 JDBC 驱动类为com.dolphindb.jdbc.Driver,定义在 DataSourceConstants.COM_DOLPHINDB_JDBC_DRIVER,并通过DolphinDBDataSourceProcessor.getDatasourceDriver()返回。连接池的探活查询(validationQuery)为select 1,定义在同文件的DOLPHINDB_VALIDATION_QUERY常量处。

若你的环境中 DolphinDB 服务版本与驱动版本存在差异,需要替换驱动版本时,可以手动将对应版本的 JDBC 驱动 JAR 放入数据源插件的依赖目录(即install-plugins.sh下载后生成的插件依赖路径),并确保插件模块以provided范围依赖驱动(插件包本身不含驱动,见 pom.xml 中 dolphinscheduler-spi、datasource-api、common 均为provided),由外部依赖目录统一提供。

四、源码级解析:插件如何被加载与使用

DolphinDB 数据源插件完全遵循 DolphinScheduler 的数据源 SPI 规范,整个模块仅含 7 个 Java 类,职责划分清晰:

职责
DolphinDBDataSourceChannelFactorySPI 工厂入口,注册DataSourceChannel,供 API 服务发现插件
DolphinDBDataSourceChannel通道门面,分别创建临时连接客户端与连接池客户端
DolphinDBAdHocDataSourceClient临时(一次性)连接客户端,用于「测试连接」等场景
DolphinDBPooledDataSourceClient基于 HikariCP 的连接池客户端,用于任务运行时的连接复用
DolphinDBDataSourceProcessor核心处理器:参数校验、DTO 转换、JDBC URL 拼接、驱动加载与连接建立
DolphinDBDataSourceParamDTO前端表单数据模型,getType()返回DbType.DOLPHINDB
DolphinDBConnectionParam后端持久化连接模型,继承BaseConnectionParam,持有 URL、驱动、密码等

其中DolphinDBDataSourceProcessor通过@AutoService(DataSourceProcessor.class)注册为服务提供者,DolphinScheduler API 服务启动时会自动扫描并加载该处理器,从而在数据源中心的下拉框中出现「DOLPHINDB」选项。

4.1 参数校验行为

在保存或测试连接前,checkDatasourceParam() 会执行两层校验:其一校验主机(host)是否为空;其二通过checkOther()校验 JSON 格式的连接参数是否合法。值得注意的是,该校验逻辑沿用了 Redshift 处理器的写法(getType()判断中保留了DbType.REDSHIFT分支),属于插件代码中的历史遗留,不影响 DolphinDB 的正常使用。

4.2 数据源唯一标识

在 DolphinDBDataSourceProcessorTest 中可以看到,DolphinDB 数据源唯一标识的生成规则为dolphindb@{user}@{password}@{jdbcUrl},用于数据源缓存与复用时的身份判定。

五、验证与常见问题

  1. 测试连接失败,日志报ClassNotFoundException: com.dolphindb.jdbc.Driver:说明插件依赖未安装。请参照上文第三节执行install-plugins.sh,并确认plugins_config中保留了dolphinscheduler-datasource-dolphindb,然后重启 API 服务。
  2. 连接超时或拒绝连接:检查 IP/端口是否可达,DolphinDB 默认端口为8848;同时确认防火墙与 DolphinDB 服务的监听配置。
  3. 时区或参数生效问题:确认是否通过「JDBC connection parameters」以 JSON 方式传入,且 JSON 格式合法(例如{"serverTimezone":"utc"}),格式错误会在校验阶段被checkOther()拦截。
  4. 任务中如何引用:在 SQL 等支持数据源的任务节点中选择已创建的 DolphinDB 数据源名称即可,底层通过DolphinDBPooledDataSourceClient复用连接,避免频繁建连。

按上述步骤完成插件激活与数据源创建后,即可在 DolphinScheduler 中像使用其他关系型数据源一样,对 DolphinDB 执行查询与数据加工任务。

【免费下载链接】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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询