Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 使用Apache Flink和Lagom实现java.io.NotSerializableException_Scala_Flink Streaming_Lagom_Flink Cep - Fatal编程技术网

Scala 使用Apache Flink和Lagom实现java.io.NotSerializableException

Scala 使用Apache Flink和Lagom实现java.io.NotSerializableException,scala,flink-streaming,lagom,flink-cep,Scala,Flink Streaming,Lagom,Flink Cep,我正在Lagom的微服务实现中编写Flink CEP程序。我的FLINK CEP程序在简单的scala应用程序中运行得非常好。但是当我在Lagom服务实现中使用这段代码时,我收到了以下异常 Lagom服务实现 override def start = ServiceCall[NotUsed, String] { val env = StreamExecutionEnvironment.getExecutionEnvironment var executionConfig = env.ge

我正在Lagom的微服务实现中编写Flink CEP程序。我的FLINK CEP程序在简单的scala应用程序中运行得非常好。但是当我在Lagom服务实现中使用这段代码时,我收到了以下异常

Lagom服务实现

override def start =  ServiceCall[NotUsed, String] {

val env = StreamExecutionEnvironment.getExecutionEnvironment

var executionConfig = env.getConfig
env.setParallelism(1)
executionConfig.disableSysoutLogging()


var topic_name="topic_test"

var props= new Properties
props.put("bootstrap.servers", "localhost:9092")
props.put("acks","all");
props.put("key.serializer","org.apache.kafka.common.serialization.StringSerializer");
props.put("value.serializer","org.apache.kafka.common.serialization.ByteArraySerializer");
props.put("block.on.buffer.full","false");

val kafkaSource = new FlinkKafkaConsumer010 (topic_name, new KafkaDeserializeSchema , props)

val stream =  env.addSource(kafkaSource)


val deliveryPattern = Pattern.begin[XYZ]("begin").where(_.ABC == 5)
  .next("next").where(_.ABC == 10).next("end").where(_.ABC==5)

val deliveryPatternStream = CEP.pattern(stream, deliveryPattern)

def selectFn(pattern : collection.mutable.Map[String, XYZ]): String  = {
  val startEvent = pattern.get("begin").get
  val nextEvent = pattern.get("next").get
  "Alert Detected"


}

val deliveryResult =deliveryPatternStream.select(selectFn(_)).print()

env.execute("CEP")
req=> Future.successful("Done")

 }



}

我不明白如何解决这个问题。

对象中的每个字段都应该是可序列化的(通常包括构造函数参数)。若要定位问题,您可能会注释掉所有组件并取消注释其中的一部分。是的,对于Flink数据处理,我序列化了我的类,在简单的scala main()方法中同样可以很好地工作,但在Lagom Microservice实现中,这个异常是apear。我认为这个例外是在Lagom框架中,将Flink的数据处理集成为web服务(在Lagom中)。@ignasi35你能回答这个问题吗?我对Flink了解不多,但看起来有一个
任务
(?)它正在被序列化,并且它包含一个
Lagom_cassServiceImpl
,它似乎是一个Lagom服务实现(并不意味着要被分发/序列化)。我认为您的方法中存在概念错误,或者您试图通过Flink发送的pojo包含对创建它的服务的引用,或者…:-(