Apache DolphinScheduler 接入 Databend 数据源:参数详解、JDBC 实现原理与插件激活指南
2026/9/14 7:08:08 网站建设 项目流程

Apache DolphinScheduler 接入 Databend 数据源:参数详解、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

Databend 是一款云原生数仓,Apache DolphinScheduler 通过dolphinscheduler-datasource-databend插件将其纳入统一的数据源管理体系,供 SQL 类任务与数据集成场景使用。本篇以官方文档 Databend 数据源指南 为骨架,结合仓库内插件源码与部署文档,完整覆盖 Databend 数据源的表单参数、底层 JDBC 拼接逻辑、jdbc 连接参数的 JSON 用法,以及从 3.3.0 起必须手动激活插件依赖的完整操作流程。读完本文,你将能够在 DolphinScheduler 中独立完成 Databend 数据源的创建、验证与排障。

DolphinScheduler 新建 Databend 数据源表单截图

一、Databend 数据源在 DolphinScheduler 中的定位

DolphinScheduler 的数据源(Datasource)是任务执行的"连接凭证 + 连接参数"抽象层。任务节点(如 SQL、DataX、Seatunnel 等)通过引用数据源,即可获得对应的 JDBC URL、驱动类与连接池,而无需在每个任务里重复填写数据库信息。

Databend 数据源对应仓库中的独立插件模块 dolphinscheduler-datasource-databend,其 Maven 坐标为dolphinscheduler-datasource-databend,插件类型标识为datasource.databend(见 pom.xml)。该模块通过@AutoService机制注册DataSourceProcessor实现类(DatabendDataSourceProcessor),从而被数据源插件框架自动发现并加载。

二、创建 Databend 数据源:表单参数完整说明

在 DolphinScheduler Web UI 中进入数据源中心 → 创建数据源,选择DATABEND,即可看到以下表单。各参数含义与原文档保持一致并补充了取值说明:

表单字段说明补充要点
数据源(Datasource)选择DATABEND该选项由插件DbType.DATABEND注册,选择后表单按 Databend 参数结构渲染
数据源名称(Datasource Name)输入数据源的名称全局唯一,作为后续任务引用时的标识
描述(Description)输入数据源的描述可选,建议注明环境(如 dev/prod)与用途
IP/主机名(IP/Host Name)输入 DATABEND 服务 IP支持域名;底层用于拼接jdbc:databend://<host>:<port>
端口(Port)输入 DATABEND 服务端口默认 HTTP 端口通常为8000(以实际部署为准),底层拼入 JDBC URL
用户名(Username)设置 DATABEND 连接的用户名传入BaseConnectionParam.user
密码(Password)设置 DATABEND 连接的密码存入前会经过PasswordUtils.encodePassword加密处理
数据库名称(Database Name)输入 DATABEND 连接的数据库名称作为 JDBC URL 的 path 段:jdbc:databend://host:port/<database>
jdbc 连接参数(jdbc connect parameters)DATABEND 连接的参数设置,以 JSON 格式表示会被转换为 URL 查询串key=value&key2=value2追加到 JDBC URL 尾部

说明:上表中"补充要点"列的取值格式均可在 DatabendDataSourceProcessor 的createConnectionParams实现中得到印证。

三、参数背后的实现原理:JDBC 地址是如何生成的

从源码看,Databend 数据源的前端表单参数在提交后会经过 DatabendDataSourceProcessor.createConnectionParams 转换为内部连接参数对象DatabendConnectionParam,核心逻辑为:

address = "jdbc:databend://" + host + ":" + port // 由 DataSourceConstants.JDBC_DATABEND 拼接 jdbcUrl = address + "/" + database

其中jdbc:databend://、驱动类与校验语句等常量统一定义在数据源 API 模块的 DataSourceConstants 中:

  • 驱动类:com.databend.jdbc.DatabendDriverCOM_DATABEND_JDBC_DRIVER
  • URL 前缀:jdbc:databend://JDBC_DATABEND
  • 连接校验语句:select 1DATABEND_VALIDATION_QUERY

DatabendConnectionParam(源码)继承自BaseConnectionParam,携带userpasswordaddressdatabasejdbcUrldriverLocationdriverClassNamevalidationQueryother等字段。其中密码以加密形式存储(PasswordUtils.encodePassword),真正建连时再解密(PasswordUtils.decodePassword),见 getConnection。

连接建立走JdbcDriverConnectionProvider标准流程:加载com.databend.jdbc.DatabendDriver驱动、按最终 JDBC URL + 用户名 + 解密后的密码创建java.sql.Connection

四、jdbc 连接参数:JSON 写法的实际拼接效果

原文档明确指出 "jdbc connect parameters" 为 JSON 格式。其底层处理逻辑位于 DatabendDataSourceProcessor.transformOther:

  • 接收一个Map<String, String>,遍历后将每对键值格式化为key=value
  • 多个参数用&连接;
  • 在 getJdbcUrl 中,若other非空,则以?拼接追加到 JDBC URL 末尾。

例如表单中填写:

{"ssl_mode": "disable", "connect_timeout": "10"}

最终生成的 JDBC URL 为:

jdbc:databend://127.0.0.1:8000/my_db?ssl_mode=disable&connect_timeout=10

这些参数与databend-jdbc驱动支持的连接属性一一对应,实际可用键值请以所用databend-jdbc版本为准。当前仓库插件在 pom.xml 中引入com.databend:databend-jdbc依赖,并排除了jaxb-apijackson-*传递依赖以避免与 DolphinScheduler 自身版本冲突,同时显式引入org.lz4:lz4-java(Databend JDBC 数据传输所需)。

五、原生支持:否——如何激活 Databend 数据源插件

原文档"Native Supported"一节明确指出:Databend 数据源不是原生支持,需按 伪集群部署文档 的 "Download Plugins Dependencies"(下载插件依赖)章节激活。这一约束源于版本演进:从 3.3.0 开始,DolphinScheduler 二进制发行包不再内置插件依赖,需要用户自行下载。

激活方式有两种:

方式一:使用 install-plugins.sh 脚本安装

bash ./bin/install-plugins.sh 3.3.0

(示例中的版本号请替换为你实际部署的 DolphinScheduler 版本;当前仓库主分支为dev-SNAPSHOT。)

方式二:通过 conf/plugins_config 精确裁剪

插件下载脚本会读取 conf/plugins_config 配置。该文件以--datasource-plugins--/--end--分段声明数据源插件列表,其中已包含dolphinscheduler-datasource-databend(见 plugins_config 第 43 行)。如果只需 Databend,可将该段裁剪为:

--datasource-plugins-- dolphinscheduler-datasource-databend --end--

排查提示:若启动后出现ClassNotFoundException之类的错误,通常是插件依赖包缺失(例如 Databend 数据源缺少databend-jdbcjar),请回到本节的激活流程检查插件包是否真正安装到位。独立部署(Standalone)场景下,最小运行同样要求先下载插件依赖,详见 standalone 部署文档。

六、从源码结构看 Databend 连接通道与连接池

激活插件后,Databend 数据源不仅可用于 UI 上的连接测试,还会被任务执行链路复用。从源码结构看,DatabendDataSourceChannel 实现了DataSourceChannel接口,同时提供两种客户端:

  • AdHoc 客户端:DatabendAdHocDataSourceClient —— 继承BaseAdHocDataSourceClient,用于即席查询类场景;
  • 连接池客户端DatabendPooledDataSourceClient—— 继承BasePooledDataSourceClient,用于任务批量执行时复用连接,避免频繁建连开销。

也就是说,你只需要在 UI 上维护一份 Databend 数据源配置,后续 SQL、DataX、Seatunnel 等任务节点都能基于同一套参数走统一的连接管理,这正是 DolphinScheduler 数据源插件化设计的价值所在。

七、小结

Databend 数据源的接入可以概括为三步:确认插件已激活(原生不内置,按伪集群文档用install-plugins.sh或裁剪plugins_config安装)→在 UI 创建数据源(对照参数表填写主机、端口、库名与 JSON 格式的 jdbc 参数)→在任务中引用(由DatabendDataSourceChannel提供 AdHoc 与连接池两种客户端)。理解jdbc:databend://host:port/database?k=v这一由 DatabendDataSourceProcessor 统一生成的 URL 形态,有助于在遇到连接失败时快速定位是驱动缺失、端口不通还是连接参数配置有误。

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

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

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

立即咨询