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
本文以 Apache DolphinScheduler 中 Databend 数据源的官方中文文档为主体,结合
dolphinscheduler-datasource-databend插件源码(位于 dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-databend),系统讲解 Databend 数据源的全部配置参数、JDBC URL 的构建规则、jdbc 连接参数的 JSON 写法,以及从 3.3.0 开始如何下载插件依赖激活该数据源。读完本文,你将能够独立在 DolphinScheduler 中正确创建 Databend 数据源,并理解其底层连接链路的实现细节。
一、Databend 数据源在 DolphinScheduler 中的定位
Databend 是一款云原生数仓产品,支持通过 JDBC 对外提供 SQL 查询能力。DolphinScheduler 将 Databend 作为内置数据源类型(DATABEND)提供给用户,用于在工作流中以 SQL 任务形式对 Databend 中的数据进行读取、加工与分析。
从插件工程结构看,Databend 数据源是一个独立的插件模块,遵循 DolphinScheduler 数据源 SPI 规范实现,包含以下核心类(见 dolphinscheduler-datasource-databend/src/main/java/org/apache/dolphinscheduler/plugin/datasource/databend):
| 类名 | 职责 |
|---|---|
DatabendDataSourceParamDTO | 页面表单参数模型,getType()返回DbType.DATABEND |
DatabendConnectionParam | 连接参数模型,继承BaseConnectionParam,保存地址、库名、JDBC URL、驱动类、验证查询等 |
DatabendDataSourceProcessor | 核心处理器,负责参数转换、JDBC URL 构建与连接创建,通过@AutoService(DataSourceProcessor.class)注册 |
DatabendDataSourceChannel | 数据源通道,统一创建 AdHoc(临时)与 Pooled(连接池)两种客户端 |
DatabendAdHocDataSourceClient/DatabendPooledDataSourceClient | 实际执行连接与查询的客户端 |
插件对应的 Maven 坐标为org.apache.dolphinscheduler:dolphinscheduler-datasource-databend,pom.xml中声明的插件名为datasource.databend,其依赖核心 JDBC 驱动为com.databend:databend-jdbc,并额外引入org.lz4:lz4-java以支持 Databend 协议中的数据压缩,详见 插件 pom.xml。
二、数据源参数详解
在 DolphinScheduler 前端界面进入"数据源中心",点击"创建数据源"并选择DATABEND类型后,需要填写以下参数(内容继承自 databend.md):
| 数据源 | 描述 |
|---|---|
| 数据源 | 选择 DATABEND |
| 数据源名称 | 输入数据源的名称 |
| 描述 | 输入数据源的描述 |
| IP/主机名 | 输入 DATABEND 服务的 IP 地址 |
| 端口 | 输入 DATABEND 服务的端口 |
| 用户名 | 设置 DATABEND 连接的用户名 |
| 密码 | 设置 DATABEND 连接的密码 |
| 数据库名称 | 输入 DATABEND 连接的数据库名称 |
| jdbc 连接参数 | DATABEND 连接的参数设置,以 JSON 格式表示 |
其中"数据源名称"是工作流中引用该数据源的唯一标识,"数据库名称"会被拼接到 JDBC URL 中作为默认连接的库。其余参数中,jdbc 连接参数最为灵活,下面重点展开。
关于 JDBC 连接参数
jdbc 连接参数采用JSON 格式填写键值对,例如:
{ "ssl": "true" }其可配置项以 Databend 官方 JDBC 驱动(databend-jdbc)支持的连接属性为准,常见用途包括:
ssl:是否启用 TLS/SSL 加密连接(true/false);connect_timeout/socket_timeout:连接超时与读写超时;batch_load:控制是否使用批量加载模式,影响大数据量写入时的性能表现;- 其他驱动支持的属性均可按需补充。
提示:
jdbc 连接参数中不要重复填写主机、端口、用户名、密码、数据库等已在表单中填写的连接要素,这些字段由表单独立管理。
三、源码视角:JDBC URL 是如何构建的
理解jdbc 连接参数如何生效,关键在于阅读 DatabendDataSourceProcessor.java 中的createConnectionParams与getJdbcUrl两个方法。
1. 基础 JDBC URL 构建(createConnectionParams):
jdbc:databend://{host}:{port}/{database}代码中的地址前缀常量取自 DataSourceConstants.java 中的JDBC_DATABEND = "jdbc:databend://"。也就是说,你在表单里填写的IP/主机名、端口、数据库名称会被组合成类似下面的连接串:
jdbc:databend://10.0.0.8:8000/default2. 驱动类与校验语句:
- 驱动类为
com.databend.jdbc.DatabendDriver(常量COM_DATABEND_JDBC_DRIVER); - 连接池健康校验语句为
select 1(常量DATABEND_VALIDATION_QUERY),这也是 Databend 数据源默认的 validation query。
3. 附加参数拼接(getJdbcUrl):
当jdbc 连接参数(内部字段名为other,即"其他参数")非空时,处理器会将 JSON 中的每个键值对转换为key=value形式,并用&连接后追加到 JDBC URL 之后,例如上文的{"ssl": "true"}最终生成:
jdbc:databend://localhost:8000/default?ssl=true这一点同样有单元测试覆盖:在 DatabendDataSourceProcessorTest.java 的testGetJdbcUrl中,{"ssl": "true"}被断言拼装为jdbc:databend://localhost:8000/default?ssl=true。
4. 密码处理与连接创建:
表单中的明文密码在落库前会经过PasswordUtils.encodePassword加密保存;真正建立连接时再通过PasswordUtils.decodePassword解密还原,并通过JdbcDriverConnectionProvider加载com.databend.jdbc.DatabendDriver完成java.sql.Connection的创建。从源码结构可以推断,该插件走的是与 MySQL、PostgreSQL 等数据源一致的"表单 DTO → 连接参数 → JDBC Provider"统一链路。
四、Databend 数据源是否原生支持
否。官方文档明确说明:Databend 数据源不是二进制发行包默认内置的插件,从 3.3.0 版本开始,二进制包不再随包提供插件依赖,需要用户自行下载激活。具体步骤见 伪集群部署文档中的"下载插件依赖"章节。
激活方式:下载插件依赖
在 DolphinScheduler 安装目录下执行:
bash ./bin/install-plugins.sh 3.3.0- 该脚本实现在 script/install-plugins.sh,其默认版本为
dev-SNAPSHOT,也可以像上面一样显式传入目标版本号; - 脚本通过 Maven 命令
mvnw dependency:get下载org.apache.dolphinscheduler:dolphinscheduler-datasource-databend的shade分类构件到本地plugins/datasource-plugins目录; - 如果不需要全部插件,可以编辑插件清单文件 config/plugins_config,在
--datasource-plugins--段中保留dolphinscheduler-datasource-databend一行、注释或删除其他不需要的数据源插件,从而只下载 Databend 相关依赖,加快部署速度并减小体积。
注意:若跳过该步骤直接启动服务并尝试使用 Databend 数据源,运行时会因缺少
databend-jdbc等依赖而抛出ClassNotFoundException,这也是官方文档特别强调"使用前需激活数据源"的原因。
五、创建与验证 Databend 数据源
完成插件下载并重启 DolphinScheduler 服务后,按以下步骤操作:
- 登录 DolphinScheduler UI,进入数据源中心;
- 点击创建数据源,类型选择DATABEND;
- 填写上文的参数表格:名称、描述、IP/主机名、端口、用户名、密码、数据库名称,并按需填写
jdbc 连接参数(JSON 格式); - 点击测试连接,系统会使用
select 1校验语句(DATABEND_VALIDATION_QUERY)验证连通性; - 测试通过后保存,即可在 SQL 类任务中通过"数据源"下拉框选择该 Databend 数据源执行查询。
关于测试用例的佐证:在 DatabendDataSourceProcessorTest.java 中可以看到,DbType.DATABEND的枚举编码为19,testBuildConnectionParams验证了jdbc:databend://localhost:8000形式地址的构建,testCreateConnectionParams2验证了jdbc:databend://localhost:8000/default形式 JDBC URL 的解析,这些用例可以作为你排查连接串拼接问题时的对照参考。
六、常见问题排查
- 测试连接报
ClassNotFoundException: com.databend.jdbc.DatabendDriver:插件依赖未下载,回到第四节执行bash ./bin/install-plugins.sh 3.3.0并确认plugins/datasource-plugins下存在dolphinscheduler-datasource-databend相关构件。 - 连接超时或握手失败:核对
IP/主机名与端口是否正确,确认 Databend 服务端 JDBC 端口已对 DolphinScheduler 所在机器开放,必要时在jdbc 连接参数中补充超时类参数。 - 需要加密/指定数据仓库时:确认"数据库名称"填写正确;涉及 SSL 或认证增强时,通过
jdbc 连接参数传入驱动支持的相关属性(JSON 键值对形式)。 - 地址解析异常:检查
jdbc 连接参数是否为合法 JSON,避免出现缺少引号、多余的逗号等格式错误,否则参数在getJdbcUrl阶段无法被正确解析拼装。
总结
Databend 数据源是 DolphinScheduler 数据源插件体系中对云原生数仓 Databend 的标准接入方式。本文完整覆盖了官方的参数表格、jdbc 连接参数的 JSON 写法,并结合插件源码还原了jdbc:databend://{host}:{port}/{database}?k=v的底层构建链路、驱动类与select 1校验逻辑。同时提醒:该数据源非原生内置,使用前务必通过 install-plugins.sh 配合 plugins_config 完成插件依赖下载。掌握上述内容后,即可在 DolphinScheduler 中稳定接入并使用 Databend 数据源。
【免费下载链接】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),仅供参考