0
嗨,我正在嘗試使用spark scala的UDAF。我收到以下例外情況。在scala中獲取類型不匹配異常
Description Resource Path Location Type type mismatch; found : scala.collection.immutable.IndexedSeq[Any] required: String SumCalc.scala /filter line 63 Scala Problem
這是我的代碼。
override def evaluate(buffer: Row): Any = {
val in_array = buffer.getAs[WrappedArray[String]](0);
var finalArray = Array.empty[Array[String]]
import scala.util.control.Breaks._
breakable {
for (outerArray <- in_array) {
val currentTimeStamp = outerArray(1).toLong
var sum = 0.0
var count = 0
var check = false
var list = outerArray
for (array <- in_array) {
val toCheckTimeStamp = array(1).toLong
if (((currentTimeStamp - 10L) <= toCheckTimeStamp) && (currentTimeStamp >= toCheckTimeStamp)) {
sum += array(5).toDouble
count += 1
}
if ((currentTimeStamp - 10L) > toCheckTimeStamp) {
check = true
break
}
}
if (sum != 0.0 && check) list = list :+ (sum).toString // getting error on this line.
else list = list :+ list(5).toDouble.toString
finalArray ++= Array(list)
}
finalArray
}
}
任何幫助將不勝感激。
我覺得你的代碼是沒有意義的。 'outerArray'是一個String(也是'list'),'array'也是一個String。如果這是你想要的,那麼你必須使用'+'而不是':+'連接(也在下面的行中)。另外,你應該給你的變量賦予更多有意義的名字 –
而你的finalArray的類型是Array [Array [String]],並且你正在給它添加Array [String],因爲list是一個String。 –