我是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)
正在引起错误。类型不匹配。为什么会导致类型不匹配错误
答案 0 :(得分:1)
之所以发生这种情况,是因为您尝试合并两个元组,但结果为整数。
您应该返回元组("", s1._2 + s2._2)
而不是s1._2 + s2._2
。