Scala 如何修复filter map和mapWithState函数

Scala 如何修复filter map和mapWithState函数,scala,apache-spark,spark-streaming,Scala,Apache Spark,Spark Streaming,我是一个新的scala录像机,我有一个flatMap函数,它返回一个FlatMappedDStream对象,这是一个触发流作业,handle函数返回一个Map[String,Any],代码如下: val parseAction = filterActions.flatMap(record => ParseOperation.parseMatch(categoryMap, record)) val finalActions = parseAction.filter(record =>

我是一个新的scala录像机,我有一个flatMap函数,它返回一个FlatMappedDStream对象,这是一个触发流作业,handle函数返回一个Map[String,Any],代码如下:

val parseAction = filterActions.flatMap(record => ParseOperation.parseMatch(categoryMap, record))
val finalActions = parseAction.filter(record => record.get("invalid").get == None)

val userModels = finalActions.map(record => (record.asInstanceOf[Map[String, Any]].getOrElse("deviceid", ""), record))
                       .mapWithState(StateSpec.function(stateUpdateFunction))
功能定义:

val parseMatch = (categoryMap: collection.Map[Int, String], record: Map[String, Any]) => {
record.get("operation").get.toString match {
  case "view" => parseView(categoryMap, record)
  case "impression" => parseRecord(record)
  case "click" => parseRecord(record)
  case _ => ListBuffer.apply(record)

}
}

parseMatch函数返回类型为Map[String,Any]的已处理流式记录,现在我想打印所有结果并放入新的filter Map函数和mapWithState函数,我尝试了一下,但不起作用。 错误代码如下:

val parseAction = filterActions.flatMap(record => ParseOperation.parseMatch(categoryMap, record))
val finalActions = parseAction.filter(record => record.get("invalid").get == None)

val userModels = finalActions.map(record => (record.asInstanceOf[Map[String, Any]].getOrElse("deviceid", ""), record))
                       .mapWithState(StateSpec.function(stateUpdateFunction))
mapWithState函数是:

val stateUpdateFunction = (deviceId: Any, newRecord: Option[Map[String, Any]], stateData: State[Map[String, Any]]) => {
  XXXX
}


但是filter函数和mapWithState函数不正确,如何修复它?

我已经修复了它,我将返回类型从Map[String,Any]修改为ListBuffer[Map[String,Any]],它确实有效