Apache DolphinScheduler DORIS 数据源接入指南:配置详解、驱动加载与 JDBC 实现原理
Apache DolphinScheduler DORIS 数据源接入指南配置详解、驱动加载与 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 官方文档 DORIS 数据源 为骨架系统讲解在 DolphinScheduler 中创建与管理 Apache Doris 数据源的完整流程包括表单字段逐一说明、原生驱动mysql-connector-j的下载与激活方式并结合dolphinscheduler-datasource-doris插件源码剖析其 JDBC URL 拼接、多 FE 负载均衡、SQL 语句分割等底层实现。读完本文你将能够独立完成 DORIS 数据源在 DolphinScheduler 中的注册、测试连接与后续 SQL 任务接入并理解其与 MySQL 生态兼容的技术原理。上图来自当前仓库 doris.png展示了 DolphinScheduler 数据源管理页中 DORIS 类型的配置界面。1. DORIS 数据源在 DolphinScheduler 中的定位Apache DolphinScheduler 是一个分布式、易扩展、可视化的工作流任务调度平台其数据源中心为各类任务如 SQL、DataX、Seatunnel 等提供了统一的数据连接管理能力。DORISApache Doris作为一款基于 MPP 架构的实时分析型数据库是 DolphinScheduler 官方原生支持的数据源类型之一。在 DolphinScheduler 的「数据源中心」页面中选择DORIS类型即可创建数据源。创建完成后该数据源可被 SQL 任务、DataX 任务、Seatunnel 任务等引用实现「一处配置、处处复用」的连接管理。从源码结构看DORIS 数据源在插件体系中拥有独立模块 dolphinscheduler-datasource-doris通过 SPI 机制注册到数据源插件框架中。2. 创建 DORIS 数据源表单字段逐一详解在 DolphinScheduler Web UI 的「数据源中心」点击「 创建数据源」选择类型DORIS会看到如下配置表单配置项是否必填说明数据源DataSource必选选择类型DORIS数据源名称Datasource Name必填输入数据源的名称用于在任务中唯一标识该数据源描述Description选填输入数据源的描述信息便于团队协作时理解用途IP 主机名IP必填输入连接 DORIS 的 IP如有多个 IP请用英文逗号,分隔端口Port必填输入连接 DORIS 的端口默认端口为9030FE 的 MySQL 协议端口用户名User Name必填设置连接 DORIS 的用户名密码Password选填设置连接 DORIS 的密码数据库名Database Name必填输入连接 DORIS 的数据库名称Jdbc 连接参数Jdbc connect parameters选填用于 DORIS 连接的参数设置以 JSON 形式填写其中前端配置表单的实现位于 use-form.ts可以看到 DORIS 类型在 UI 层的默认端口被定义为9030即 Apache Doris FE 对外提供 MySQL 协议服务的默认端口。2.1 多 FE 地址填写方式DORIS 集群通常包含多个 FE 节点。当填写多个 IP 时使用英文逗号分隔例如10.198.0.1,10.198.0.2,10.198.0.3,10.198.0.4端口填写一致即可。后端会将这些地址拼接为jdbc:mysql:loadbalance://形式的负载均衡 JDBC 地址详见下文源码分析。2.2 Jdbc 连接参数JSON 形式「Jdbc 连接参数」以 JSON 对象形式填写例如{ serverTimezone: Asia/Shanghai, useUnicode: true, characterEncoding: UTF-8, rewriteBatchedStatements: true }这些参数会被转换为 JDBC URL 的查询串query string拼接到连接地址之后。源码实现见 DorisDataSourceProcessor.javatransformOther()方法将 JSON 中的每个键值对格式化为keyvalue再用连接成标准查询参数。3. 是否原生支持与驱动激活3.1 原生支持状态否。DORIS 数据源并非开箱即用使用前需先激活插件依赖。请参考 伪集群部署文档 中的「下载插件依赖」章节完成数据源插件的加载。驱动下载链接mysql-connector-j-8.0.333.2 为什么 DORIS 数据源需要 MySQL 驱动从 DorisDataSourceProcessor.java 源码可以看到Override public String getDatasourceDriver() { return DataSourceConstants.COM_MYSQL_CJ_JDBC_DRIVER; } Override public String getValidationQuery() { return DataSourceConstants.MYSQL_VALIDATION_QUERY; }对应常量定义位于 DataSourceConstants.javapublic static final String COM_MYSQL_CJ_JDBC_DRIVER com.mysql.cj.jdbc.Driver; public static final String MYSQL_VALIDATION_QUERY select 1; public static final String JDBC_MYSQL_LOADBALANCE jdbc:mysql:loadbalance://;即 DolphinScheduler 通过MySQL JDBC 驱动com.mysql.cj.jdbc.Driver连接 Apache Doris原因是 Doris 的 FE 节点对外暴露 MySQL 兼容协议。这也是为什么插件 pom.xml 中引入了com.mysql:mysql-connector-j依赖见 pom.xml且官方文档要求单独下载mysql-connector-j-8.0.33.jar。连接建立后使用select 1作为连接池的校验查询validation query。3.3 插件依赖激活方式从 3.3.0 版本开始DolphinScheduler 二进制发行包不再内置插件依赖需要用户自行下载。具体步骤见 伪集群部署文档 的「下载插件依赖」章节bash ./bin/install-plugins.sh 3.3.0插件依赖包下载地址为 Maven 中央仓库的org/apache/dolphinscheduler路径。由于通常不需要全部连接器插件可以通过编辑conf/plugins_config文件指定所需的插件例如仅需要dolphinscheduler-datasource-doris时将文件配置为--datasource-plugins-- dolphinscheduler-datasource-doris --end--注意插件依赖包通常不包含在二进制包中。如果在启动服务时遇到ClassNotFoundException错误请参考相关插件类型的文档检查是否缺少插件依赖包。以 DORIS 数据源为例其依赖的mysql-connector-java.jar需要单独下载并放置到对应插件的libs目录中。4. 源码级原理剖析DORIS 数据源插件如何工作DORIS 数据源插件模块位于 dolphinscheduler-datasource-doris包含 7 个 Java 文件职责划分如下文件职责DorisDataSourceChannelFactory插件工厂SPI 注册入口DorisDataSourceChannel数据源通道创建连接客户端DorisPooledDataSourceClient池化连接客户端任务执行用DorisAdHocDataSourceClient临时连接客户端测试连接用DorisDataSourceProcessor核心处理器参数转换、JDBC URL 生成、SQL 解析DorisConnectionParam连接参数实体DorisDataSourceParamDTO表单参数 DTO4.1 SPI 插件注册机制Doris 通过AutoService注解实现 SPI 自动注册见 DorisDataSourceChannelFactory.javaAutoService(DataSourceChannelFactory.class) public class DorisDataSourceChannelFactory implements DataSourceChannelFactory { Override public DataSourceChannel create() { return new DorisDataSourceChannel(); } Override public String getName() { return DbType.DORIS.getName(); } }当数据源中心选择 DORIS 类型时DolphinScheduler 通过该工厂创建DorisDataSourceChannel进而创建两种连接客户端见 DorisDataSourceChannel.javacreateAdHocDataSourceClient()创建DorisAdHocDataSourceClient用于「测试连接」等一次性场景createPooledDataSourceClient()创建DorisPooledDataSourceClient用于任务执行时的连接池复用。4.2 JDBC URL 的拼接逻辑DorisDataSourceProcessor继承自AbstractDataSourceProcessor核心是createConnectionParams()方法见 DorisDataSourceProcessor.javaString[] hosts datasourceParam.getHost().split(Constants.COMMA); for (int i 0; i hosts.length; i) { hosts[i] String.format(Constants.FORMAT_S_S_COLON, hosts[i], mysqlDatasourceParam.getPort()); } String address String.format(%s%s, DataSourceConstants.JDBC_MYSQL_LOADBALANCE, String.join(,, hosts)); String jdbcUrl String.format(Constants.FORMAT_S_S, address, mysqlDatasourceParam.getDatabase());其拼接过程可拆解为将表单中的多 IP逗号分隔拆分为 host 数组为每个 host 拼接端口得到host1:port,host2:port,host3:port用前缀jdbc:mysql:loadbalance://拼出 address最后拼上数据库名得到完整 JDBC URL。因此填写 IP 为10.198.0.1,10.198.0.2、端口为9030、数据库为test时实际生成的 JDBC URL 为jdbc:mysql:loadbalance://10.198.0.1:9030,10.198.0.2:9030/testloadbalance模式由 MySQL Connector/J 驱动支持会在多个 FE 地址间进行负载均衡与故障转移这正是 DORIS 高可用场景下的推荐连接方式。4.3 密码加密与连接创建存储时PasswordUtils.encodePassword()对密码加密后写入DorisConnectionParam连接时getConnection()通过JdbcDriverConnectionProvider构建连接并使用PasswordUtils.decodePassword()解密密码见 DorisDataSourceProcessor.java。4.4 SQL 注释移除与语句分割splitAndRemoveComment()是 SQL 任务执行前的重要步骤见 DorisDataSourceProcessor.java// Because doris is highly compatible with mysql syntax, // a mysql-type implementation can be used for comments and statement split. String cleanSQL SQLParserUtils.removeComment(sql, com.alibaba.druid.DbType.mysql); return SQLParserUtils.split(cleanSQL, com.alibaba.druid.DbType.mysql);由于 Doris 高度兼容 MySQL 语法代码直接复用 Druid 的 MySQL 解析器完成 SQL 注释移除和按分号切分多语句。对应测试用例 DorisDataSourceProcessorTest.java 验证了以下场景包含set语句与insert ... select的混合 SQL 可被正确切分为多条语句--行注释与/* */块注释可被正确移除。4.5 测试用例验证的核心行为单元测试 DorisDataSourceProcessorTest.java 覆盖了插件的关键行为测试方法验证内容testCreateConnectionParams单 host 与多 host 场景下 address / jdbcUrl 的拼接结果testGetDatasourceDriver驱动类名为com.mysql.cj.jdbc.DrivertestGetValidationQuery校验查询为select 1testGetDbType数据库类型为DbType.DORISsplitAndRemoveComment多语句 SQL 的切分testSplitAndRemoveCommentWithComments注释移除后语句数正确testGetDatasourceUniqueId数据源唯一标识格式为dorisuserpasswordjdbcUrl其中多 host 测试断言了jdbc:mysql:loadbalance://localhost:3306,localhost1:3306/default这一典型拼接结果印证了 4.2 节的 URL 生成逻辑。5. 常见问题与排查建议问题现象可能原因与排查方向测试连接报ClassNotFoundException: com.mysql.cj.jdbc.Driver缺少 MySQL 驱动依赖需下载 mysql-connector-j-8.0.33 并放入数据源插件 libs 目录或通过install-plugins.sh激活插件多 FE 场景下部分地址不可达确认所有 FE 的 MySQL 协议端口默认 9030均可从 DolphinScheduler 所在机器访问loadbalance模式会自动剔除故障节点但仍需保证至少一个 FE 存活连接超时或时区异常在「Jdbc 连接参数」中通过 JSON 配置serverTimezone、connectTimeout等参数SQL 任务中多语句执行异常确认 SQL 中语句以分号正确分隔插件按 MySQL 语法解析Doris 特有语法请确保与 MySQL 兼容6. 小结本文围绕 DolphinScheduler 的 DORIS 数据源从 UI 表单配置、驱动依赖激活到插件源码实现三个层面完成了系统性梳理。核心要点总结如下在数据源中心选择DORIS类型填写名称、IP可逗号分隔多 FE、端口默认 9030、用户名、密码、数据库名以及可选的 JSON 格式 JDBC 连接参数DORIS 数据源非开箱即用需参考 伪集群部署文档 的「下载插件依赖」章节激活并准备mysql-connector-j-8.0.33.jar驱动底层通过 MySQL JDBC 驱动以jdbc:mysql:loadbalance://负载均衡地址连接 Doris FE密码加密存储SQL 解析复用 MySQL 语法规则。如需进一步了解其他数据源如 MySQL、PostgreSQL、StarRocks 等的配置方式可查阅 docs/docs/zh/guide/datasource 目录下的对应文档。【免费下载链接】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),仅供参考

相关新闻

机器人导航local planner深度解析:DWA与TEB选型及调参实战

机器人导航local planner深度解析:DWA与TEB选型及调参实战

我这几年做机器人导航项目,从建图、定位到全局规划一路趟过来,说实话前面几步的成就感都来得比较“虚”:地图画出来了,路径规划出来了,看起来头头是道,可真让机器人跑起来才发现,真正决定它能不…

2026/11/8 11:40:02 阅读更多 →
SpringBoot仿天猫商城毕设源码解析:从数据模型到订单并发扣减

SpringBoot仿天猫商城毕设源码解析:从数据模型到订单并发扣减

简介:这是一份基于Spring Boot仿天猫商城的毕业设计项目源码,主要面向正在准备毕业论文的高校学生,以及希望掌握电商项目开发流程的Java后端初学者。项目围绕电商平台常见的商品展示、购物车、订单提交、后台商品与分类管理等功能模块展开&am…

2026/11/6 18:30:28 阅读更多 →
30米DEM数据处理全流程:从ZIP解压到坡度分析

30米DEM数据处理全流程:从ZIP解压到坡度分析

简介:吉林省吉林市30米分辨率DEM数字高程数据包,适合GIS学习者、城乡规划从业者及从事环境分析、地质灾害评估、遥感图像匹配等工作的技术人员使用。数据以TIFF格式存储核心高程栅格,并附带覆盖吉林市本级的Shapefile矢量边界,配合…

2026/11/6 18:30:28 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/8 1:19:03 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/8 14:17:55 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/9 1:59:56 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/8 1:38:41 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/9 7:45:06 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/8 1:23:14 阅读更多 →

日新闻

周新闻

月新闻