Apache kafka 在一个数据流中匹配或连接两个kafka主题中的事件和规则

Apache kafka 在一个数据流中匹配或连接两个kafka主题中的事件和规则,apache-kafka,apache-flink,flink-cep,Apache Kafka,Apache Flink,Flink Cep,我想在一个数据流中连接两个卡夫卡主题 事实上,两个数据流必须具有相同的id才能进行连接。 事件是来自传感器的数据,规则包含将使用CEP(来自用户界面)检查的规则 这是我的测试,但不起作用,有人能帮我吗 DataStream<Object> evtAndRule=inputEventStream.join(rulesStream) .where(new KeySelector<TrackEvent, Object>() {

我想在一个数据流中连接两个卡夫卡主题

事实上,两个数据流必须具有相同的id才能进行连接。 事件是来自传感器的数据,规则包含将使用CEP(来自用户界面)检查的规则

这是我的测试,但不起作用,有人能帮我吗

DataStream<Object> evtAndRule=inputEventStream.join(rulesStream)
            .where(new KeySelector<TrackEvent, Object>() {
                @Override
                public Object getKey(Event event) throws Exception {
                    return event.getId();
                }
            }).equalTo(new KeySelector<RulesEvent, Object>() {
                @Override
                public Object getKey(RulesEvent rulesEvent) throws Exception {
                    return rulesEvent.getId();
                }
            }).window(TumblingTimeWindows.of(Time.of(10, TimeUnit.SECONDS)))
            .apply(new FlatJoinFunction<TrackEvent, RulesEvent, Object>() {
                @Override
                public void join(TrackEvent trackEvent, RulesEvent rulesEvent, Collector<Object> collector) throws Exception {
            ....

                }
            });
DataStream evtAndRule=inputEventStream.join(rulessStream)
.where(新密钥选择器(){
@凌驾
公共对象getKey(事件)引发异常{
return event.getId();
}
}).equalTo(新的键选择器(){
@凌驾
公共对象getKey(RulesEvent RulesEvent)引发异常{
返回rulesEvent.getId();
}
}).window(TumblingTimeWindows.of(Time.of(10,TimeUnit.SECONDS)))
.apply(新的FlatJoinFunction(){
@凌驾
公共无效联接(TrackEvent TrackEvent、RulesEvent RulesEvent、收集器)引发异常{
....
}
});

我尝试了这个方法,但我不知道如何检索所需的规则,以及这是否是最佳解决方案

        DataStream<Tuple2<Event , RulesEvent>> evtAndRule= inputEventStream.map(new MapFunction<Event , Tuple2<Event , RulesEvent>>() {
        @Override
        public Tuple2<Event , RulesEvent> map(final Event event) throws Exception {

            return new Tuple2<Event , RulesEvent>(event, new RulesEvent());
        }
    });
DataStream evtAndRule=inputEventStream.map(新的MapFunction(){
@凌驾
公共Tuple2映射(最终事件)引发异常{
返回新的Tuple2(事件,newrulesevent());
}
});