flink中的cep(complex event processing)是處理複雜事件流的庫,可以自動在流式資料處理中對相關事件進行處理和檢索。比如用乙個使用者在1min內連續登入的失敗次數超過2次,則將該使用者的登入的行為判斷為惡意登入的行為。
本篇是cep程式設計入門的第一篇
2.11
<
/scala.binary.version>
1.10
.0<
/flink.version>
<
/properties>
org.apache.flink<
/groupid>
flink-cep_$
<
/artifactid>
$<
/version>
<
/dependency>
org.apache.flink<
/groupid>
flink-cep-scala_$
<
/artifactid>
$<
/version>
<
/dependency>
<
/dependencies>
// 定義輸入資料的樣例類
case
class
loginevent
(userid: long, ip: string, eventtype: string, eventtime: long)
object loginfailwithcep )
//// val pattern: pattern[loginevent, loginevent] = pattern.begin[loginevent]("start")
// .where(new ******condition[loginevent] )
// .next("next")
// .where(new ******condition[loginevent] )
// .times(2)
// .within(time.seconds(2))
//// val patternstream: patternstream[loginevent] = cep.pattern(datastream, pattern)
// val value: datastream[(string, string, string)] = patternstream.process(new patternprocessfunction[loginevent, (string, string, string)]
// }
// })
// 定義乙個匹配模式,next緊鄰發生的事件,判斷在2s內緊鄰發生的事件是否為fail
val loginfailpattern = pattern.begin[loginevent]
("begin").
where
(_.eventtype ==
"fail").
next
("next").
where
(_.eventtype ==
"fail"
)// .times(2) //匹配的次數為2
.within
(time.
seconds(2
))//在keyby之後的流中匹配出pattern stream
val loginpatternstream = cep.
pattern
(datastream, loginfailpattern)
import scala.collection.map
val logfaildatastream = loginpatternstream.
select
((pattern: map[string, iterable[loginevent]])
=>
) logfaildatastream.
print()
env.
execute
("loginfailwithcep")}
}
(1,
192.168
.0.3
,fail)(2
,192.168
.10.12
,fail)
程式設計的入門(一)
在我看來程式設計是一件輕鬆而又快樂的事情。淡然我現在是這麼認為,但是以前學習程式設計的經歷實在是無法讓我輕鬆快樂起來,反倒給我帶來了很大的痛苦,很多時候我都會迷茫,迷茫不知道自己在什麼水平,或者感覺自己懂了些,但是很多東西卻不知道如何下手,這種停頓在乙個地方的感覺實在是不好受,以前聽過網上的前輩說多...
shell程式設計入門(一)
shell程式設計簡介 在linux系統中,雖然有各種各樣的圖形化介面工具,但是shell仍然是乙個非常靈活的工具。shell不僅僅是命令的收集,而且是一門非常棒的程式語言。我們可以通過使用shell使大量的任務自動化,shell特別擅長系統管理任務,尤其適合那些易用性 可維護性和便攜性比效率更重要...
Shell入門程式設計(一)
class creativecommons href rel license class article source link2222 href class markdown views prism github gist id content views shell 有多個版本 bourne s...