DSC0000.jpg
2022-9-30 10:26 上传
前面我们讲了利用数据分发,如何把数据同步到ElasticSearch,利用ElasticSearch优秀的查询性能轻松支撑千万级别数据量的查询,同时也有一个点:将数据聚合至一处,Join查询字段做字段冗余,订单行表做嵌套文档没有详细讲,本文我们展开讲解一下如何做冗余和嵌套。
宽表代码处理 概念介绍 宽表: 把多个维度的字段都放在一张表存储,增加数据冗余是为了减少关联,便于查询。查询一张表就可以查出不同维度的多个字段 窄表: 和我们MySQL普通表三范式相同,把相同维度的字段组成一张表,表和表之间关联查询其他维度数据 维度表: 包含维度编码和该维度下的多个属性 事实表: 包含一个业务事件的相关属性
代码处理宽表 CloudCanal提供了可以让我们编写自定义代码的入口,我们可以在这基础上写我们的处理代码,比如Join其他表,查出子表的多行数据,再传输到ElasticSearch。
代码官方参考例子:https://gitee.com/clougence/cloudcanal-data-process
ES索引主键处理 MYSQL同步ElasticSearch,_Id无法在一个任务中自定义不同字段,只能用Id,界面上配置的_Id值有时候可以生效,有时候不能生效,比较诡异
DSC0001.png
2022-9-30 10:26 上传
解决: 1、CloudCanal发现有类型问题,官方回复是"_Id是自动处理的,不支持自定义代码进行干涉。你需要干涉_Id涉及的列,自定义代码自己对AfterPkColumn和BeforePkColumn做处理即可" 2、界面上的配置就是摆设,不稳定担心后续会有坑,所以在代码层面处理:
- 把索引的Id字段从Long类型变为Keyword类型,方便存储字符(规划是Id$表名)
- 在增、改、删操作前,先把Id的值换掉
DSC0002.png
2022-9-30 10:26 上传
CloudCanal发布代码 自定义代码打包
上传自定义代码 在创建任务的过程中,上传自定义Jar包,选中打包的Jar包后上传
DSC0003.png
2022-9-30 10:26 上传
自定义代码部署更新 首次任务配置时,可以上传Jar包,后续代码如果有更新,可以在任务管理界面更新Jar包,更新后任务会重启,后续的增量数据就会走新的Jar包。 Debug自定义代码 如果使用CloudCanal自定义代码碰到问题,在任务的日志界面可以查看到报错进行定位,同时也可以打开CloudCanal Debug模式,任务启动将自动等待Debug链接。 进入参数设置 任务详情->参数设置
DSC0004.png
2022-9-30 10:26 上传
配置DebugMode参数 找到DebugMode参数,配置为True。生效配置并重启任务。任务启动后将会停止并等待远程Debug客户端连接。
DSC0005.png
2022-9-30 10:26 上传
启动远程Debug
远程Debug,以Idea为例,设置任务运行地址(Sidecar容器或运行节点Ip ,以及默认8787端口)
DSC0006.png
2022-9-30 10:26 上传
通过自定义代码处理,除了本文的宽表代码处理,我们还可以基于数据分发做非常多的操作,这给了数据分发组件非常大的可能性,在代码Demo的地址中,有不少自定义代码处理案例,大家可以自己尝试动手,利用代码处理自定义分发的数据,从而达到数据处理的目的。
往期推荐 1汉得企业级数字化PaaS平台 HZERO 1.9.0 版本正式发布! 2汉得aPaaS低代码平台-飞搭 2.3.0 RELEASE正式发布! 3重磅发布 | 汉得iPaaS全域集成平台 集星獭 1.5.0 版本正式发布 4干货分享 | HZERO系列组件之辅助开发核心包,一招搞定开发! 5干货分享 | HZERO系列组件之消息管理组件,满足您的多种发送需求 6干货分享 | HZERO系列组件之数据分发组件(一),广播表快速入门 7干货分享 | HZERO系列组件之数据分发组件(二),ElasticSearch同步方案
联系我们
产品试用请登录开放平台。请在 PC 端打开:
https://open.hand-china.com/market-home/trial-center/
产品详情请登录开放平台:
https://open.hand-china.com/document-center/
如有疑问登录开放平台提单反馈:
https://open.hand-china.com/
DSC0007.png
2022-9-30 10:26 上传
DSC0008.jpg
2022-9-30 10:26 上传
▲ 更多精彩内容,扫码关注 “四海汉得” 公众号
|