
Apache DolphinScheduler PostgreSQL 数据源接入指南【免费下载链接】dolphinschedulerApache DolphinScheduler is the modern data orchestration platform. Agile to create high performance workflow with low-code项目地址: https://gitcode.com/GitHub_Trending/dol/dolphinschedulerPostgreSQL 是 Apache DolphinScheduler 中最常用的数据源类型之一既可作为任务执行的 SQL 引擎目标也是 DolphinScheduler 自身元数据库的默认选项之一。本文以官方文档 POSTGRESQL 数据源 为主线完整讲解在 DolphinScheduler 中创建 PostgreSQL 数据源的每一步操作、底层 JDBC 连接参数的生成逻辑以及从 3.3.0 版本开始非原生支持的数据源插件激活方法帮助你一次性打通从配置界面到任务执行的全链路。一、在 DolphinScheduler 中创建 PostgreSQL 数据源在 DolphinScheduler Web UI 中进入数据源中心 → 创建数据源页面选择POSTGRESQL类型后需要填写以下字段表单字段说明数据源选择 POSTGRESQL数据源名称输入数据源的名称后续创建 SQL 任务时按此名称引用描述输入数据源的描述信息可选IP 主机名输入连接 POSTGRESQL 的 IP端口输入连接 POSTGRESQL 的端口默认 5432用户名设置连接 POSTGRESQL 的用户名密码设置连接 POSTGRESQL 的密码数据库名输入连接 POSTGRESQL 的数据库名称Jdbc 连接参数用于 POSTGRESQL 连接的参数设置以 JSON 形式填写其中Jdbc 连接参数是以 JSON 形式填写的键值对例如{ serverTimezone: Asia/Shanghai, stringtype: unspecified, ApplicationName: dolphinscheduler }填写完成后点击测试连接验证连通性通过后保存即可。之后在 SQL 任务的数据源下拉框中即可选择该 PostgreSQL 数据源。二、是否原生支持3.3.0 之后的插件激活官方文档明确说明PostgreSQL 数据源否非原生支持使用前需要参考 伪集群部署 中的下载插件依赖章节激活数据源。原因在于从 3.3.0 版本开始DolphinScheduler 的二进制发布包不再内置任何插件依赖所有插件包括数据源插件都需要用户自行下载并放入plugins目录。仓库中的 install-plugins.sh 脚本会读取 config/plugins_config 配置通过mvnw dependency:get以shadeclassifier 下载对应插件包。激活 PostgreSQL 数据源有两种方式方式一全量安装所有插件bash ./bin/install-plugins.sh 3.3.0方式二只安装你需要的插件编辑conf/plugins_config文件在--datasource-plugins--段中保留dolphinscheduler-datasource-postgresql然后执行安装脚本--datasource-plugins-- dolphinscheduler-datasource-postgresql --end--bash ./bin/install-plugins.sh 3.3.0当前仓库根目录的 config/plugins_config 中--datasource-plugins--段默认就包含dolphinscheduler-datasource-postgresql这一行。插件依赖如postgresqlJDBC 驱动不会随二进制包附带若启动时遇到ClassNotFoundException请检查是否缺少对应的插件依赖包。三、源码级原理JDBC 连接是如何生成的PostgreSQL 数据源的连接参数并非前端直连数据库而是由插件模块dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-postgresql在服务端统一组装。核心类是 PostgreSQLDataSourceProcessor.java1. 连接地址与 JDBC URL 的拼接String address String.format(%s%s:%s, DataSourceConstants.JDBC_POSTGRESQL, postgreSqlParam.getHost(), postgreSqlParam.getPort()); String jdbcUrl String.format(%s/%s, address, postgreSqlParam.getDatabase());即最终得到形如jdbc:postgresql://host:port/database的 JDBC URL。这一点在单元测试 PostgreSQLDataSourceProcessorTest.java 中有直接断言jdbc:postgresql://localhost:3308/default。2. 驱动类与校验 SQL驱动类名和连接校验语句定义在 DataSourceConstants.java驱动org.postgresql.Driver常量ORG_POSTGRESQL_DRIVER连接校验语句select version()常量POSTGRESQL_VALIDATION_QUERYPostgreSQL 特有的校验方式对应的 getter 见PostgreSQLDataSourceProcessor#getDatasourceDriver()与#getValidationQuery()。3. 密码加密存储数据源保存时密码会通过PasswordUtils.encodePassword()加密后存入PostgreSQLConnectionParam建立真实连接时再通过PasswordUtils.decodePassword()解密避免明文落库。4. Jdbc 连接参数的 URL 化拼接界面填写的 JSON 形式的Jdbc 连接参数会被解析为MapString, String在真正获取连接时通过transformOther()转换为keyvalue形式并以连接追加到 JDBC URL 的?之后if (MapUtils.isNotEmpty(postgreSqlConnectionParam.getOther())) { return String.format(%s?%s, postgreSqlConnectionParam.getJdbcUrl(), transformOther(postgreSqlConnectionParam.getOther())); }测试用例验证了该行为otherother会被拼成jdbc:postgresql://localhost:3308/default?otherother。5. 连接池与临时连接PostgreSQL 数据源同时提供两种连接客户端由 PostgreSQLDataSourceChannel.java 统一创建PostgrePooledSQLDataSourceClient继承自BasePooledDataSourceClient用于任务执行的连接池客户端PostgreAdHocSQLDataSourceClient用于临时/即席查询的客户端。6. SQL 分割的 PostgreSQL 方言支持PostgreSQLDataSourceProcessor#splitAndRemoveComment()使用 Druid 的 PostgreSQL 方言解析器去除 SQL 注释并实现了对 PostgreSQL 特有的**美元引号dollar-quote**块如$DO$ ... $DO$、函数体$$ ... $$的识别分割 SQL 语句时不会错误地把美元引号内的分号当作语句结束符从而保证存储过程、函数定义等含$块的 SQL 能被正确逐条执行。四、PostgreSQL 作为 DolphinScheduler 元数据库除作为任务数据源外PostgreSQL 也是 DolphinScheduler 支持的元数据库选项之一。在伪集群部署中通过bin/env/dolphinscheduler_env.sh环境配置文件指定export DATABASE${DATABASE:-postgresql} export SPRING_PROFILES_ACTIVE${DATABASE} export SPRING_DATASOURCE_URLjdbc:postgresql://127.0.0.1:5432/dolphinscheduler export SPRING_DATASOURCE_USERNAME{user} export SPRING_DATASOURCE_PASSWORD{password}数据库的创建与初始化请参考 数据源配置 中的伪分布式/分布式安装初始化数据库章节。注意dolphinscheduler_env.sh中的配置会覆盖各服务application.yaml中的同名配置如SPRING_DATASOURCE_URL对应spring.datasource.url。五、验证与排错测试连接失败检查 IP/端口是否可达、用户名密码是否正确、目标库是否存在以及plugins目录下是否已安装dolphinscheduler-datasource-postgresql插件包ClassNotFoundException: org.postgresql.Driver通常就是缺少插件依赖。连接参数不生效确认Jdbc 连接参数为合法 JSON且键值能被 PostgreSQL JDBC 驱动识别例如stringtypeunspecified用于避免varchar类型参数被严格校验。SQL 任务报错若 SQL 中包含存储过程或$tag$...$tag$美元引号块确认使用的 DolphinScheduler 版本包含本文所述的美元引号感知分割逻辑。通过以上配置与原理说明你可以在 DolphinScheduler 中快速完成 PostgreSQL 数据源的接入并在 SQL 任务中稳定执行查询、写入与存储过程调用。【免费下载链接】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),仅供参考