火花减少功能导致“错误类型不匹配”

时间:2018-09-27 05:36:44

标签: scala apache-spark pyspark

我是scala-spark的新手,并将我的数据集加载到RDD中。这是我的样本数据集

scala> flightdata.collect
res39: Array[(String, Int)] = Array((DFW,11956), (DTW,588), (SEA,607), (JFK,1595), (SJC,327), (ORD,4664), (PHX,4993), (STL,661),

从上述数据集中,我需要找到总和。因此,我这样写

scala> flightdata.values.sum
res40: Double = 445827.0

scala> flightdata.map(_._2).reduce( (a,b) => a + b)
res41: Int = 445827

value.sum和使用reduce的映射都给出正确的答案。但是我试图用reduce重写相同的代码元组。

scala> flightdata.reduce( (s1,s2) => s1._2 + s2._2)
<console>:26: error: type mismatch;
 found   : Int
 required: (String, Int)
       flightdata.reduce( (s1,s2) => s1._2 + s2._2)

正在引起错误。类型不匹配。为什么会导致类型不匹配错误

1 个答案:

答案 0 :(得分:1)

之所以发生这种情况,是因为您尝试合并两个元组,但结果为整数。

您应该返回元组("", s1._2 + s2._2)而不是s1._2 + s2._2