Я подписался на этот пример и реализован с помощью kafka json с теми же примерами данных.
выборочные данные потребителей {"temperature" : 28,"machineName":"xyz"}
DataStream<Alert> patternStream = CEP.pattern(inputEventStream, warningPattern)
.flatSelect(new PatternFlatSelectFunction<TemperatureEvent, Alert>() {
private static final long serialVersionUID = 1L;
@Override
public void flatSelect(Map<String, List<TemperatureEvent>> event, Collector<Alert> out) throws Exception {
new Alert("Temperature Rise Detected:" + ((TemperatureEvent) event.get("first")).getTemperature()
+ " on machine name:" + ((MonitoringEvent) event.get("first")).getMachineName());
}
Теперь у меня проблема с приведением ArrayList
Exception in thread "main" org.apache.flink.runtime.client.JobExecutionException: Job execution failed.
at org.apache.flink.runtime.jobmaster.JobResult.toJobExecutionResult(JobResult.java:146)
at org.apache.flink.runtime.minicluster.MiniCluster.executeJobBlocking(MiniCluster.java:647)
at org.apache.flink.streaming.api.environment.LocalStreamEnvironment.execute(LocalStreamEnvironment.java:123)
at Test.KafkaApp.main(KafkaApp.java:61)
Вызвано: java.lang.ClassCastException: java.util.ArrayList не может быть приведен к Test.TemperatureEvent в Test.KafkaApp$2.flatSelect(KafkaApp.java:53) в org.apache.flink.cep.operator.FlatSelectCepOperator.processMatchedSequences( FlatSelectCepOperator.java:66) в org.apache.flink.cep.operator.AbstractKeyedCEPPatternOperator.processEvent(AbstractKeyedCEPPatternOperator.java:382) в org.apache.flink.cep.operator.AbstractKeyedCEPPatternOperator.processElement(AbstractKeyedCEPPatternOperator.java:198) в org. .apache.flink.streaming.runtime.io.StreamInputProcessor.processInput(StreamInputProcessor.java:202) в org.apache.flink.streaming.runtime.tasks.OneInputStreamTask.run(OneInputStreamTask.java:105) в org.apache.flink .streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:300) в org.apache.flink.runtime.taskmanager.Task.run(Task.java:704) в java.lang.Thread.run(неизвестный источник)