使用RestCloud ETL强大的自定义规则实现自定义数据处理算法

 

实时数据处理规则有什么作用

在大数据中的实时数据采集、ETL批量数据传输过程中很多数据处理过程以及数据质量都希望实时进行处理和检测并把不符合要求的脏数据过滤掉或者进行实时的数据质量告警等。

 

在数据仓库建设过程中,每家企业的数据处理过程中肯定会有一些自身的数据处理特点如学号的处理、车牌号的处理、身份证号码的处理、SKU编码的处理、订单号的处理等等,各行各业都有自已的数据处理和运算方式,而ETL平台本身只是内置了一些通用的数据处理规则,企业所需要的这些个性化的运算规则就可以通过ETL的自定义规则来实现了。

 

怎么自定义数据处理规则?

首先进入ETL平台的一个应用,只有应用中才可以新增自定义规则,因为规则必须属于某一个应用。

注意:新增一个规则的分类才可以新增自定义规则

 

进入应用配置中新增一个规则分类

 

有了分类后再进入到自定义规则中就可以新增规则了,点击新增规则后给规则一个名称如:发动机号校验规则、订单号合法性校验规则等等,class path不用填系统会自动生成。

 

自定义数据处理规则的注意事项

规则新增成功后就可以给规则进行代码逻辑的编写了

 

系统会自动生成一个规则运算的代码模板出来,只需要根据模板中的提示进行逻辑修改即可

平台运算规则使用的是标准的Java语法,不是JavaScript之类的,所以不用担心运算规则的执行效率,经过我们测试处理100W的数据使用Java规则只需要几秒即可完成,而如果用JavaScript语法的规则需要几分钟才能完成,所以RestCloud ETL在性能上是很有优势的。

 

规则代码编写完成后可以点击编译并保存按扭即可,如果提示成功则表示代码没有问题,如果提示失败可以根据提示信息进行代码修改,如果在Web IDE中编辑不是很方便也可以把代码copy到idea/eclipse中进行编辑,编辑完成后再copy进来即可。

 

使用参数提升数据处理规则的复用率

如果规则都是固定算法不需要在系统执行时传入参数就不需要定义参数,但是有时我们为了能提升规则的复用性就必须得用到规则参数的功能了如:自定义一个格式化时间的规则,而格式化时间会有: yyyy-MM-dd、yyyy年MM月dd日、yyyy-MM-dd HH:mm:ss等等,根本不知道用户想格式化成什么样,光是一个时间格式如果不用参数我们就得定义一大堆规则才可以实现上面的功能,最好的方式是时间的格式是由绑定规则时指定的一个参数,这样我们在开发规则的时修只需要一个规则即可完成。

 

在新建规则时可以指定一个规则参数,这样在用户选择这个规则时就会提醒用户设定参数

 

这样用户可以在绑定规则时指定一个参数,这个参数会传入到规则的方法中

系统通过一个{参数id:参数值}的json传入,我们转为map对象后再获取参数值即可在代码中使用。

 

怎么使用规则进行数据质量的检查或过滤

规则定义好后我们就可以在ETL的流程中使用这些规则来进行数据质量的检查,数据清洗过滤等操作,如下面这个流程就可以把不符合要求的电话号码的用户给过滤掉同时发送告警通知给用户

 

自定义规则调用第三方jar包

规则中可以使用import 引入自已开发的jar包或者第三方jar包的class进入,这样就可以利用第三方jar包中的运算能力(如:spark、sm4加密算法、逻辑回归算法等)来实现很多复杂业务的处理和数据运算。

 

规则中可以执行SQL吗?

规则中可以很方便的执行SQL语句,系统已经封装了ETLRdbUtil这样工具类(还有其他很多数据库的工具类如:Redis,MongoDB,ES,Kafka等)如下代码即可执行SQL并返回数据

String sql=”select * from tablename where id<10”;

List docs=ETLRdbUtil.listDocs(ETLRdbUtil.getConnection("数据源id"), sql);

for(Document doc:docs) {

PrintUtil.o(doc.getString("userId"));

}

ETLRdbUtil工具类有很多方便访问数据库的工具,一般只需要几行代码就能读取、写入、修改数据,后面我们会专门介绍ETLRdbUtil工具类的使用。

 

 

 

posted @ 2022-06-10 22:05  RestCloud谷云科技  阅读(144)  评论(0编辑  收藏  举报