Я работал над кодом Scala для домашнего задания и столкнулся со странной ошибкой при работе со встроенной функцией sin, которая не имеет для меня большого смысла.
val pi = 3.14159265
val REarth = 6371.0 // kilometers
def toRadians(x: Double): Double = x * pi / 180.0
def haversine(lat1: Double, lon1: Double, lat2: Double, lon2: Double): Double = {
var lt1 = toRadians(lat1)
var lt2 = toRadians(lat2)
var dlat = toRadians(lat2 - lat1)
var dlon = toRadians(lon2 - lon1)
var x = sin(dlat/2)
var a = x * x + cos(lt1) * cos(lt2) * sin(dlon/2)**2
var c = 2 * atan2(sqrt(a), sqrt(1-a))
return REarth * c
}
import org.apache.spark.sql.functions.udf
val haver = udf(haversine _)
Когда я запускаю этот код, я получаю следующую ошибку:
<console>:37: error: overloaded method value sin with alternatives:
(columnName: String)org.apache.spark.sql.Column <and>
(e: org.apache.spark.sql.Column)org.apache.spark.sql.Column
cannot be applied to (Double)
var x = sin(dlat/2)
^
Я действительно не уверен, что происходит, насколько я могу сказать, что функция sin должна работать должным образом, и я чувствую, что Я упускаю что-то очевидное. Любое руководство будет оценено.