Есть много разных способов сделать это. Вы можете использовать map
, например:
val df = Seq((101,1,1,1,1,1),(102,2,2,2,2,2),(103,3,3,3,3,3)).toDF("id", "a", "b", "c", "d", "e")
df.map(row => (row.getString(0), row.getInt(1)+row.getInt(2)+row.getInt(3)))
.toDF("id", "a+b+c")
Или вы можете использовать udf
, например:
import org.apache.spark.sql.functions._
import spark.implicits._
val addCols = udf((a: Int, b:Int, c: Int) => a+b+c)
df.select('id, addCols('a, 'b, 'c) as "a+b+c")
Или иди с предложением Шайдо :)