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.DatabendDriver(COM_DATABEND_JDBC_DRIVER) - URL 前缀:
jdbc:databend://(JDBC_DATABEND) - 连接校验语句:
select 1(DATABEND_VALIDATION_QUERY)
DatabendConnectionParam(源码)继承自BaseConnectionParam,携带user、password、address、database、jdbcUrl、driverLocation、driverClassName、validationQuery、other等字段。其中密码以加密形式存储(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-api与jackson-*传递依赖以避免与 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),仅供参考