跳到主要内容

自定义代码任务

自定义代码允许用户使用 java 代码编写自定义数据处理逻辑,通过将代码 jar 包上传 CloudCanal ,在数据全量迁移、增量同步时自动调用这些代码,达到各种数据转换处理目的。

自定义代码调用位于 CloudCanal 整个任务处理链的中间部分,如下图所示:

Custom Code In CloudCanal

应用场景

自定义代码主要应用于 CloudCanal 暂时无法标准化的数据迁移同步场景,具有灵活、带有一定业务语意、以及部分复杂度的特点。

以下罗列部分场景以供参考:

  • 数据变换
    • 数据脱敏,可附带业务加解密算法
    • 时间数据时区转换
  • 数据清洗
    • 异常值和空值处理
    • 缺失值补全
    • 数据标准化
  • 实时宽表构建
    • 事实表维表打宽表
  • 数据汇聚
    • 分库分表数据汇聚
    • 跨区域数据集中
  • 业务逻辑处理
    • 业务架构升级产生的数据复杂变换

操作说明

代码开发

  • 自定义代码开发推荐在 Intellij IdeaEclipse 等 java IDE 中进行
  • CloudCanal 提供了基础工程 cloudcanal-data-process ,将此工程导入 IDE 即可进行开发
  • cloudcanal-data-process 工程提供了应用示例,可参考修改进行应用
  • 自定义代码类需要实现 com.clougence.cloudcanal.sdk.api.CloudCanalProcessorV2 接口达成被 CloudCanal 调用的目的 CloudCanalProcessorV2 implement

代码打包

  • 修改打包元信息 Modify Package Meta

  • 进入工程目录,使用命令进行打包

    % pwd
    /Users/zylicfc/source/product/cloudcanal/cloudcanal-data-process
    % mvn -Dtest -DfailIfNoTests=false -Dmaven.javadoc.skip=true -Dmaven.compile.fork=true clean package
  • 执行命令后,可在对应目录得到 jar 包 Jar File Path

任务创建

  • 其他步骤略
  • 选择列页面,点击右上角,上传自定义代码Upload Jar Package
  • 任务自动运行 Running

代码调试

远程 Debug

  • CloudCanal 支持 debug 自定义代码,具体步骤可参考 自定义代码debug 文档
  • 任务启动后,可在 IDE 中断点 debug Debug Code

打印日志

  • CloudCanal 日志组件提供了一个固定日志文件(custom_processor.log)给到业务逻辑打印日志

  • 具体操作步骤可参考 自定义代码中打印日志 文档

  • 生效后,即可在 控制台 (任务详情 > 查看日志 > custom_process.log)看到日志内容 Console Customer Log

  • 也可以到 任务日志目录 查看完整的日志文件 File Customer Log

代码更新

  • 任务详情页 > 代码包管理(页面右侧/功能列表) Update Code

  • 上传代码 Upload Code

  • 激活 Active Code

常见问题

代码包不生效

  • 页面上重启任务,自定义代码包传输只在任务启动时触发
  • 如果以上无效,可在 sidecar 容器或节点 /home/clougence/cloudcanal/datahandle 目录下查看代码包是否存在 Customer Code On Node
  • 如果不存在包,可手动上传代码包(代码包名字按报错日志内提示进行修改)

日志不打印

  • 自定义代码日志只会打印在 custom_processor.log 中,所以检查下 logger 名字是否正确 Log Error
  • 或按照 代码包不生效 进行处理

校验任务自定义代码无效

  • 目前校验订正任务均并不支持自定义代码,所以不生效

总结

本文简要介绍了 CloudCanal 自定义代码操作步骤,涵盖代码开发、任务创建和更新、问题排查等。