【发布时间】:2017-05-18 14:19:36
【问题描述】:
这是我的代码。
SplitStream<MonitoringEvent> splitStream = inputStream.split(new OutputSelector<MonitoringEvent>() {
@Override
public Iterable<String> select(MonitoringEvent me) {
List<String> ml = new ArrayList<String>();
ml.add(me.getEventType());
return ml;
}
我有随机顺序的监控事件流 温度:80,压力:70,湿度:80,温度:30...
使用上面的代码,我正在拆分流,事件类型,即温度流,压力流。
问题是,如果我知道 eventType,我可以像这样从 splitStream 中选择它
splitStream.select('temperatureStream')
但 eventType 是动态的,不是预定义的。
我将如何为这个动态流应用 CEP。如果
temperate is > 90 for past 10 minutes ...
pressure is > 90 for past 10 minutes ...
【问题讨论】:
-
不理想,但由于您的事件类型是有限且小的(温度、压力、湿度...),您可以拥有多个流,然后对这些单独的流进行类型特定的处理。如果 eventTypes 显着增长,那么是的,这将很难管理。
-
或在源/生产者或使用某种基于键的路由(如消息传递)预先拆分事件
-
@madhairsilence 这个有什么解决方案吗?我几乎有同样的问题。
-
您不能为此使用 Flink 的 CEP 组件。您将不得不编写自定义窗口事件。并处理它。如果可能,将尝试发布代码。
标签: apache-flink complex-event-processing data-stream