Вы можете использовать map
:
map(MapFunction<T,U> func, Encoder<U> encoder)
и перестройте целое Row
, или объедините все нужные вам столбцы с struct
и используйте udf:
import static org.apache.spark.sql.functions.*;
UserDefinedFunction f = udf(
(Row row) -> row.getInt(0) + row.getInt(1) + row.getInt(2),
DataTypes.IntegerType
);
df.withColumn("c3", f(struct(col("c1"), col("c2"), col("c3"))));
, но оба метода будут значительно менее эффективными, чем использование стандартных выражений SQL.