flink cep 复杂事件处理引擎,可以实时分析数据流中检查分析出符合要求的事件,flink目前sql 也支持cep了,阿里云上已有相关功能开放使用。flink在上层api上sql 的功能越来越强了,这是它优于其它流式计算框架的地方,降低了使用门槛。应用场景:智能营销,金融风控,异常检测等。目前主流的CEP工具有Esper,drools和商业版的microsoft streaminsight等。
使用flink cep 进行模式规则开发必须对 api 熟悉才能开发出符合要求的模式规则,下面通过案例来分别介绍flink cep api。demo 代码如下,根据测试的api会进行对应api的替换修改和数据的修改。
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
env.setParallelism(1);
// env.setStreamTimeCharacteristic(TimeCharacteristic.EventTime);
DataStream<String> input = env.fromElements("a","c","a","c","a","a","b","b","f","c","g","H","c");
Pattern<String, String> pattern = Pattern.<String>begin("start").where(new SimpleCondition<String>() {
@Override
public boolean filter(String event) {
return event.equals("a");
}
}).times(2).allowCombinations().next("middle").subtype(String.class).where(
new SimpleCondition<String>() {
@Override
public boolean filter(String subEvent) {
return subEvent.equals("b");
}
}
).followedByAny("end").where(
new SimpleCondition<String>() {
@Override
public boolean filter(String event) {
return event.equals("c");
}
}
);
PatternStream<String> patternStream = CEP.pattern(input, pattern);
DataStream<String> result = patternStream.select(
new PatternSelectFunction<String, String&