Я хочу создать по существу sumproduct по столбцам в Spark DataFrame. У меня есть DataFrame, который выглядит следующим образом:SumProduct в Spark DataFrame
id val1 val2 val3 val4
123 10 5 7 5
Я также есть карта, которая выглядит как:
val coefficents = Map("val1" -> 1, "val2" -> 2, "val3" -> 3, "val4" -> 4)
Я хочу взять значение в каждом столбце DataFrame, умножить его на соответствующий дорожим с карты, и возвращает результат в новый столбец так, по существу:
(10*1) + (5*2) + (7*3) + (5*4) = 61
Я попытался это:
val myDF1 = myDF.withColumn("mySum", {var a:Double = 0.0; for ((k,v) <- coefficients) a + (col(k).cast(DoubleType)*coefficients(k));a})
но получил ошибку при перегрузке метода «+». Даже если я это решила, я не уверен, что это сработает. Есть идеи? Я всегда мог динамически строить SQL-запрос как текстовую строку и делать это так, но я надеялся на что-то более красноречивое.
Любые идеи приветствуются.