Я новичок в 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, и map с использованием 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)
это вызывает ошибку. несоответствие типов. почему это вызывает ошибку несоответствия типа
Это происходит из-за того, что вы пытаетесь объединить два кортежа, но в результате получаете целое число.
Вы должны вернуть кортеж ("", s1._2 + s2._2)
вместо s1._2 + s2._2
.
да. У вас есть пара "что-то", и вы должны вернуть одно "что-то"
Большое спасибо .. После замены на выражение "(" ", s1._2 + s2._2)" он работает нормально. В сокращении fn. Тип ввода такой же, как и тип вывода. я правильно понимаю?