干货分享 | HZERO系列组件之数据分发组件(三),自定义代码处理

前面我们讲了利用数据分发,如何把数据同步到ElasticSearch,利用ElasticSearch优秀的查询性能轻松支撑千万级别数据量的查询,同时也有一个点:将数据聚合至一处,Join查询字段做字段冗余,订单行表做嵌套文档没有详细讲,本文我们展开讲解一下如何做冗余和嵌套。

宽表代码处理

概念介绍

宽表: 把多个维度的字段都放在一张表存储,增加数据冗余是为了减少关联,便于查询。查询一张表就可以查出不同维度的多个字段

窄表: 和我们Mysql普通表三范式相同,把相同维度的字段组成一张表,表和表之间关联查询其他维度数据

维度表: 包含维度编码和该维度下的多个属性

事实表: 包含一个业务事件的相关属性

 

代码处理宽表

CloudCanal提供了可以让我们编写自定义代码的入口,我们可以在这基础上写我们的处理代码,比如Join其他表,查出子表的多行数据,再传输到ElasticSearch。

代码官方参考例子:https://gitee.com/clougence/cloudcanal-data-process

ES索引主键处理

MYSQL同步ElasticSearch,_Id无法在一个任务中自定义不同字段,只能用Id,界面上配置的_Id值有时候可以生效,有时候不能生效,比较诡异

解决:

1、CloudCanal发现有类型问题,官方回复是"_Id是自动处理的,不支持自定义代码进行干涉。你需要干涉_Id涉及的列,自定义代码自己对AfterPkColumn和BeforePkColumn做处理即可"

2、界面上的配置就是摆设,不稳定担心后续会有坑,所以在代码层面处理:

  • 把索引的Id字段从Long类型变为Keyword类型,方便存储字符(规划是Id$表名)

  • 在增、改、删操作前,先把Id的值换掉

CloudCanal发布代码

自定义代码打包

  • 子工程下Src/main/resources/META-INF/cloudcanal/plugin.properties中修改为需要使用的类;

  • 子工程下Mvn -Dtest -DfailIfNoTests=false -Dmaven.javadoc.skip=true -Dmaven.compile.fork=true clean Package 打包;

  • 将Target下的Jar包拷贝出来,重命名为自己需要的命名。

 

上传自定义代码

在创建任务的过程中,上传自定义Jar包,选中打包的Jar包后上传

 

自定义代码部署更新

首次任务配置时,可以上传Jar包,后续代码如果有更新,可以在任务管理界面更新Jar包,更新后任务会重启,后续的增量数据就会走新的Jar包。

Debug自定义代码

如果使用CloudCanal自定义代码碰到问题,在任务的日志界面可以查看到报错进行定位,同时也可以打开CloudCanal Debug模式,任务启动将自动等待Debug链接。

入参数设置

任务详情->参数设置

配置DebugMode参数

找到DebugMode参数,配置为True。生效配置并重启任务。任务启动后将会停止并等待远程Debug客户端连接。 

启动远程Debug

远程Debug,以Idea为例,设置任务运行地址(Sidecar容器或运行节点Ip ,以及默认8787端口)

通过自定义代码处理,除了本文的宽表代码处理,我们还可以基于数据分发做非常多的操作,这给了数据分发组件非常大的可能性,在代码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/

图片

图片

▲ 更多精彩内容,扫码关注 “四海汉得” 公众号

 

优秀的个人博客,低调大师

微信关注我们

原文链接:https://my.oschina.net/u/4580203/blog/5581368

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
Mario,低调大师唯一一个Java游戏作品

Mario,低调大师唯一一个Java游戏作品

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Apache Tomcat7、8、9(Java Web服务器)

Apache Tomcat7、8、9(Java Web服务器)

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Sublime Text 一个代码编辑器

Sublime Text 一个代码编辑器

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。