如何使用flink-cep库检测咿呀咿呀学语


0

如何使用flink cep库检测咿呀咿呀呀呀?

例子:

OFF     16/08/18 11:38
ON      16/08/18 11:38
OFF     16/08/18 11:38
ON      16/08/18 11:37
OFF     16/08/18 11:37
ON      16/08/18 11:36
OFF     16/08/18 11:36
OFF     16/08/18 11:36
ON      16/08/18 11:36
OFF     16/08/18 11:35
ON      16/08/18 11:35
ON      16/08/18 11:34
OFF     16/08/18 11:34

1 答案


0

如果流是按时间顺序排列的(只对每个单独设备的流进行排序),那么您可以轻松地 transformation流以使分析更容易。像这样的RichFlatMapFunction将把开关事件序列 transformation为状态更改事件序列:

static class DetectChanges extends RichFlatMapFunction<String, String> {
    private transient ValueState<String> previousState;

@Override
public void open(Configuration parameters) throws Exception {
    previousState = getRuntimeContext().getState(new ValueStateDescriptor&lt;&gt;("previousState", String.class));
}

@Override
public void flatMap(String onOrOff, Collector&lt;String&gt; out) throws Exception {

    if (previousState.value() != onOrOff) {
        out.collect("CHANGE");
        previousState.update(onOrOff);
    }
}

}

如果在某个时间间隔内确定某个事件的时间间隔已经减少,则该问题已经减少。这可以很容易地用滑动窗来完成,或者如果您愿意,可以使用CEP。

你也可以完全用CEP。从概念上讲,您可以按照以下方式进行处理:

    定义一个匹配ON+OFF的单独模式+

我来回答

写文章

提问题

面试题