
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/dolphinschedulerDolphinDB 是一款面向时序数据的高性能分布式数据库常被用于量化金融、物联网等高频数据场景。在 Apache DolphinScheduler 中你可以通过内置的dolphinscheduler-datasource-dolphindb插件将 DolphinDB 注册为数据源供 SQL 类任务、数据导入导出等编排流程复用连接信息。本文基于官方文档与仓库源码完整讲解 DolphinDB 数据源的创建步骤、每个字段的含义与底层映射逻辑以及如何从 3.3.0 版本开始手动下载并激活该插件帮助你一次配置、随处复用快速打通 DolphinDB 与 DolphinScheduler 的调度链路。一、在 DolphinScheduler UI 中创建 DolphinDB 数据源登录 DolphinScheduler 后进入「数据源中心」页面点击「创建数据源」在数据源类型下拉框中选择DOLPHINDB即可看到如下表单。各字段的含义如下字段说明Datasource数据源类型选择DOLPHINDBDatasource Name数据源名称为该数据源命名名称在同一租户下应保持唯一后续任务中通过该名称引用连接Description描述可选填写该数据源的用途、负责人等备注信息IP/Host NameIP/主机名DolphinDB 服务的 IP 或主机名Port端口DolphinDB 服务的端口DolphinDB 默认端口为8848Username用户名连接 DolphinDB 的用户名例如 DolphinDB 默认管理员adminPassword密码对应用户名的密码JDBC connection parametersJDBC 连接参数DolphinDB 连接的参数设置以JSON 格式填写非必填填写完成后点击「测试连接」成功后保存即可。从源码结构看前端表单收集的正是 DolphinDBDataSourceParamDTO 中定义的一组属性——name、note描述、host、port、userName、password与otherJDBC 连接参数后端校验与持久化都围绕这份 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测试断言address与jdbcUrl均为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(MapString, 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?k1v1k2v2的形式每个 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.0install-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.xmlGroupIdcom.dolphindbArtifactIdjdbc版本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.DOLPHINDBDolphinDBConnectionParam后端持久化连接模型继承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}用于数据源缓存与复用时的身份判定。五、验证与常见问题测试连接失败日志报ClassNotFoundException: com.dolphindb.jdbc.Driver说明插件依赖未安装。请参照上文第三节执行install-plugins.sh并确认plugins_config中保留了dolphinscheduler-datasource-dolphindb然后重启 API 服务。连接超时或拒绝连接检查 IP/端口是否可达DolphinDB 默认端口为8848同时确认防火墙与 DolphinDB 服务的监听配置。时区或参数生效问题确认是否通过「JDBC connection parameters」以 JSON 方式传入且 JSON 格式合法例如{serverTimezone:utc}格式错误会在校验阶段被checkOther()拦截。任务中如何引用在 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),仅供参考