自定义代码任务
自定义代码允许用户使用 java 代码编写自定义数据处理逻辑,通过将代码 jar 包上传 CloudCanal ,在数据全量迁移、增量同步时自动调用这些代码,达到各种数据转换处理目的。
自定义代码调用位于 CloudCanal 整个任务处理链的中间部分,如下图所示:
应用场景
自定义代码主要应用于 CloudCanal 暂时无法标准化的数据迁移同步场景,具有灵活、带有一定业务语意、以及部分复杂度的特点。
以下罗列部分场景以供参考:
- 数据变换
- 数据脱敏,可附带业务加解密算法
- 时间数据时区转换
- 数据清洗
- 异常值和空值处理
- 缺失值补全
- 数据标准化
- 实时宽表构建
- 事实表维表打宽表
- 数据汇聚
- 分库分表数据汇聚
- 跨区域数据集中
- 业务逻辑处理
- 业务架构升级产生的数据复杂变换
操作说明
代码开发
- 自定义代码开发推荐在 Intellij Idea 或 Eclipse 等 java IDE 中进行
- CloudCanal 提供了基础工程 cloudcanal-data-process ,将此工程导入 IDE 即可进行开发
- cloudcanal-data-process 工程提供了应用示例,可参考修改进行应用
- 自定义代码类需要实现
com.clougence.cloudcanal.sdk.api.CloudCanalProcessorV2
接口达成被 CloudCanal 调用的目的
代码打包
修改打包元信息
进入工程目录,使用命令进行打包
% pwd
/Users/zylicfc/source/product/cloudcanal/cloudcanal-data-process
% mvn -Dtest -DfailIfNoTests=false -Dmaven.javadoc.skip=true -Dmaven.compile.fork=true clean package执行命令后,可在对应目录得到 jar 包
任务创建
- 其他步骤略
- 选择列页面,点击右上角,上传自定义代码
- 任务自动运行
代码调试
远程 Debug
- CloudCanal 支持 debug 自定义代码,具体步骤可参考 自定义代码debug 文档
- 任务启动后,可在 IDE 中断点 debug
打印日志
CloudCanal 日志组件提供了一个固定日志文件(
custom_processor.log
)给到业务逻辑打印日志具体操作步骤可参考 自定义代码中打印日志 文档
生效后,即可在 控制台 (任务详情 > 查看日志 > custom_process.log)看到日志内容
也可以到 任务日志目录 查看完整的日志文件
代码更新
任务详情页 > 代码包管理(页面右侧/功能列表)
上传代码
激活
常见问题
代码包不生效
- 因为传输等问题,可能导致包分发失败(docker部署方式有一定概率失败)
- 查看任务主日志是否有报自定义代码包不存在错误
- 可在 sidecar 容器或节点
/home/clougence/cloudcanal/datahandle
目录下查看代码包是否存在 - 可手动上传代码包(代码包名字按报错日志内提示进行修改)
- 可在页面上多次重启任务
日志不打印
- 自定义代码日志只会打印在 custom_processor.log 中,所以检查下 logger 名字是否正确
- 或按照 代码包不生效 进行处理
校验任务自定义代码无效
- 目前校验订正任务均并不支持自定义代码,所以不生效
总结
本文简要介绍了 CloudCanal 自定义代码操作步骤,涵盖代码开发、任务创建和更新、问题排查等。