资讯动态

Apache DolphinScheduler DORIS 数据源接入指南:配置详解、驱动加载与 JDBC 实现原理

发布时间:2026/9/15 20:50:01 来源:尧图企业网站定制
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),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价