【问题标题】:"missing parameter type" in groupBygroupBy 中的“缺少参数类型”
【发布时间】:2015-03-19 07:47:02
【问题描述】:

我是一个 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))

编译器能够推断“它”是过滤器和映射中的 Map[String, Any],但不是 groupBy。为什么??

【问题讨论】:

  • groupBy 在map 之后,所以it 是Map,它没有.path 方法。所以也许这是一个真正的错误,编译器只是在试图推断出不正确的代码类型时感到困惑?
  • 我们对 Map 进行了扩充,使其具有路径方法。这不是问题。

标签: scala scala-collections scala-2.10


【解决方案1】:

更多的是建议而不是答案:

尝试拆分链式调用:

val foo = rdd map f
val bar = foo groupBy g

获取 REPL 中 foo 的类型。

您要求它解决地图的结果类型,即 Map,以及重载并带有隐式的 groupBy。

在对 API 了解不多的情况下,如果类型参数不可推断,我不会感到惊讶。

【讨论】:

  • 这就是我最终做的,分裂了链条。谢谢!
猜你喜欢
  • 2016-06-13
  • 1970-01-01
  • 2022-01-21
  • 2011-12-29
  • 2017-10-30
  • 2020-08-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多