從滴滴flinkCEP說起


640?wx_fmt=png

本文留言,邀請好友點贊,點贊數超過20有獎勵,具體獎勵內容,可以細讀本文。

ppt全文可關注公眾號,后台輸入 flink 獲取。

640?wx_fmt=png

 

640?wx_fmt=pngCEP業務場景

 

復雜事件處理(Complex Event Process,簡稱CEP)用來檢測無盡數據流中的復雜模 式,擁有從不同的數據行中辨識查找模式的能力。模式匹配是復雜事件處理的一個強 大援助。 例子包括受一系列事件驅動的各種業務流程,例如在安全應用中偵測異常行為;在金 融應用中查找價格、交易量和其他行為的模式。其他常見的用途如欺詐檢測應用和傳 感器數據的分析等。

說了這么多可能還是覺得比較抽象,那么我們可以看看這次滴滴分享的FlinkCEP在滴滴中的業務場景。

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png

吐槽時刻:

雖然,業務場景ppt寫的很好,但是最近幾次順風車事故,給大家留下了糟糕的印象。大數據沒用起來,cep其實應該也可以用在順風車安全檢測上吧。

640?wx_fmt=pngFlink CEP

 

Flink的CEP是基於Flink Runtime構建的實時數據規則引擎,擅長解決跨事件的匹配問題。

可以看看,滴滴的屁屁踢上給出的兩個demo

640?wx_fmt=png

640?wx_fmt=png

Flink CEP的特點

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png動態規則

 

其實,對於實時領域的規則引擎,我們不想每次修改都要打包編碼,只希望簡單修改一下規則就讓它能執行。

當然,最好規則是sql 的形式,運營人員直接參與規則編寫而不是頻繁提需求,很麻煩。。。。此處,省略萬字。。

要知道flink CEP官網給出的API也還是很豐富的,雖然滴滴這比也給出了他們完善的內容。

640?wx_fmt=png

640?wx_fmt=png

flink官方的CEP文章,浪尖及浪尖組織的flink小團隊,已經翻譯過了。鏈接如下:

https://github.com/crestofwave1/oneFlink/blob/master/doc/CEP/FlinkCEPOfficeWeb.md

那么,為了實現動態規則編寫,滴滴的架構如下:

640?wx_fmt=png

具體的規則實現如下:

640?wx_fmt=png

可以看到,其規則還是要編碼成java代碼,然后再用groovy動態編譯解析,不知道效率如何。。。

對於規則引擎,當然很多人想到的是drools,這個跟flink結合也很簡單,但是效率不怎么苟同。

640?wx_fmt=pngFlink CEP的SQL實現

 

熟悉flink的小伙伴肯定都知道Flink的SQL引擎是基於Calcite來實現的。那么細心的小伙伴,留學簽證在calcite官網可以發現,calcite有個關鍵字MATCH_RECOGNIZE。可以在這個網頁搜索,找到MATCH_RECOGNIZE關鍵字使用。

http://calcite.apache.org/docs/reference.html

640?wx_fmt=png

那么這時候可能會興沖沖寫個demo。

 
        

很掃興的它報錯了:

640?wx_fmt=png

那么問題來了,calcite支持而flink不支持,為啥?

趕緊發了個issue,然后迅速得到官方回復:

640?wx_fmt=png

 

但是,翻翻阿里的blink使用手冊和華為的flink使用手發現兩者都支持。

好吧。其實,很不服氣,周末,除了健身就是加班

波折一番,解決了,需要修改flink-table相關的內容,執行計划,coden等。

最終,實現了。

640?wx_fmt=png

超過20個,即可獲得該運行通過完整代碼。

640?wx_fmt=jpeg

歡迎關注浪尖微信公眾號,學習掌握大數據生態技術。

640?wx_fmt=png

更多優質內容,歡迎掃描二維碼加入浪尖知識星球,各類教程,浪尖原創源碼視頻,優質技術短文應有盡有。

640?wx_fmt=jpeg

640?wx_fmt=gif?有意義留言,然后邀請好友點贊,超過20,即可獲得前面所述源碼!


文章來源:https://blog.csdn.net/rlnLo2pNEfx9c/article/details/82156679


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM