我是一个scala新手,很难理解应该是一行简单的代码。我做了一个 .groupBy 操作并关闭了"它",但编译器抱怨"缺少参数类型",我不知道如何解决它。这是确切的代码(它在不同的网络上,所以我必须重新输入 - 请原谅任何拼写错误):
val rddSAInCache: RDD[Map[String, Any]] = getCache(SAInCacheExported, rddconfig)
.filter(it => it.path(EventType).getOrElse(NONE) == "SAInCache")
.map(it =>
Map(
("SAInCache" -> it.path(Time).getOrElse(NONE)),
(RequestID -> it.path(RequestID).getOrElse(NONE))
)
)
.groupBy(it => it.path(RequestID.getOrElse(NONE))
编译器能够推断出"it"是过滤器和map中的Map[String,Any],但不能推断groupBy。为什么??
与其说是答案,不如说是建议:
尝试拆分链式调用:
val foo = rdd map f
val bar = foo groupBy g
获取 REPL 中的 foo 类型。
您要求它求解映射的结果类型(即 Map)以及 groupBy,后者严重重载并带有隐式内容。
在对 API 了解不多的情况下,如果类型参数不可推断,我也不会感到惊讶。