spark中的Scala类型不匹配错误

spark中的Scala类型不匹配错误,scala,Scala,我创建了以下函数: def mapToPers(inTuple: (String, String, String), v: ((Double, Double, Double, Double, Double), Map[Double, (Double, Double, Double, Double, Double)])) = { val (prod: String,

我创建了以下函数:

 def mapToPers(inTuple: (String, String, String), 
               v: ((Double, Double, Double, Double, Double),
                   Map[Double,
                       (Double, Double, Double, Double, Double)])) = {

      val (prod: String, market: String, week: String) = inTuple
      val result = for (cumePeriod <- cumePeriods) yield {
        val (per, weekList) = cumePeriod
        if (weekList.contains(week)) ((prod, market, per), v)        
  }
 result
}
def映射器(inTuple:(字符串,字符串,字符串),
v:((双,双,双,双,双),
地图[双,
(双,双,双,双,双)])={
val(产品:字符串,市场:字符串,周:字符串)=插管
val结果=用于(累计周期)
scala.collection.immutable.Iterable[Any]必需:((字符串,字符串,字符串),((双精度,双精度,双精度,双精度),
Map[Double,(Double,Double,Double,Double)])=>
可遍历一次[?]


很明显,嵌套元组有问题。请检查括号:

发现:

(
  (String, String, String), 
  (
    (Double, Double, Double, Double, Double), 
    Map[Double,(Double, Double, Double, Double, Double)]
  )
) => scala.collection.immutable.Iterable[Any] 
所需:

(
  (
    (String, String, String), 
    (
      (Double, Double, Double, Double, Double), 
      Map[Double,(Double, Double, Double, Double, Double)]
    )
  )
) => TraversableOnce[?]
因此,我看到了嵌套的另一个层次。鉴于非常混乱的类型,很难发现,我建议您在这里使用一些case类

编辑:顺便说一句,我发现了一些其他内容。您正在使用的
if
没有其他内容,因此理解者将不知道要精确生成什么内容。您可能需要在检查以下内容后才能生成:

val result = for { 
  (per, week_list) <- cumePeriods
  if week_list.contains(week)
}
  yield ((prod, market, per), v)
val result=用于{

(每周列表)很明显,嵌套元组有问题。请检查括号:

发现:

(
  (String, String, String), 
  (
    (Double, Double, Double, Double, Double), 
    Map[Double,(Double, Double, Double, Double, Double)]
  )
) => scala.collection.immutable.Iterable[Any] 
所需:

(
  (
    (String, String, String), 
    (
      (Double, Double, Double, Double, Double), 
      Map[Double,(Double, Double, Double, Double, Double)]
    )
  )
) => TraversableOnce[?]
因此,我看到了嵌套的另一个层次。鉴于非常混乱的类型,很难发现,我建议您在这里使用一些case类

编辑:顺便说一句,我发现了一些其他内容。您正在使用的
if
没有其他内容,因此理解者将不知道要精确生成什么内容。您可能需要在检查以下内容后才能生成:

val result = for { 
  (per, week_list) <- cumePeriods
  if week_list.contains(week)
}
  yield ((prod, market, per), v)
val result=用于{

(每周列表)很明显,嵌套元组有问题。请检查括号:

发现:

(
  (String, String, String), 
  (
    (Double, Double, Double, Double, Double), 
    Map[Double,(Double, Double, Double, Double, Double)]
  )
) => scala.collection.immutable.Iterable[Any] 
所需:

(
  (
    (String, String, String), 
    (
      (Double, Double, Double, Double, Double), 
      Map[Double,(Double, Double, Double, Double, Double)]
    )
  )
) => TraversableOnce[?]
因此,我看到了嵌套的另一个层次。鉴于非常混乱的类型,很难发现,我建议您在这里使用一些case类

编辑:顺便说一句,我发现了一些其他内容。您正在使用的
if
没有其他内容,因此理解者将不知道要精确生成什么内容。您可能需要在检查以下内容后才能生成:

val result = for { 
  (per, week_list) <- cumePeriods
  if week_list.contains(week)
}
  yield ((prod, market, per), v)
val result=用于{

(每周列表)很明显,嵌套元组有问题。请检查括号:

发现:

(
  (String, String, String), 
  (
    (Double, Double, Double, Double, Double), 
    Map[Double,(Double, Double, Double, Double, Double)]
  )
) => scala.collection.immutable.Iterable[Any] 
所需:

(
  (
    (String, String, String), 
    (
      (Double, Double, Double, Double, Double), 
      Map[Double,(Double, Double, Double, Double, Double)]
    )
  )
) => TraversableOnce[?]
因此,我看到了嵌套的另一个层次。鉴于非常混乱的类型,很难发现,我建议您在这里使用一些case类

编辑:顺便说一句,我发现了一些其他内容。您正在使用的
if
没有其他内容,因此理解者将不知道要精确生成什么内容。您可能需要在检查以下内容后才能生成:

val result = for { 
  (per, week_list) <- cumePeriods
  if week_list.contains(week)
}
  yield ((prod, market, per), v)
val result=用于{

(每周列表)请问,输出是什么
。另外,
v
来自何处?cumeperiod的类型是什么?与其创建如此疯狂的元组,不如为每个元组创建单独的
case类
。更容易修复/调查bug。请问,
println(inTuple)
println(cumeperiod)的输出是什么
。另外,
v
来自何处?cumeperiod的类型是什么?与其创建如此疯狂的元组,不如为每个元组创建单独的
case类
。更容易修复/调查bug。请问,
println(inTuple)
println(cumeperiod)的输出是什么
。另外,
v
来自何处?cumeperiod的类型是什么?与其创建如此疯狂的元组,不如为每个元组创建单独的
case类
。更容易修复/调查bug。请问,
println(inTuple)
println(cumeperiod)的输出是什么
。另外,
v
来自哪里?什么类型的CumePeriod?与其创建如此疯狂的元组,不如为每个元组创建单独的
case类
。更容易修复/调查bug。