Restcloud ETL 我的演算法我做主

RestCloud發表於2022-06-10

實時資料處理規則有什麼作用

在大資料中的實時資料採集、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工具類的使用。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70005218/viewspace-2899977/,如需轉載,請註明出處,否則將追究法律責任。

相關文章