这可以使用 spark 中的transform 函数来完成。
首先定义执行转换的函数。
import org.apache.spark.sql.functions._
import org.apache.spark.sql.DataFrame
def addOne(df: DataFrame) = {
df.withColumn("plusOne", df("col") + 1)
}
def addTwo(df: DataFrame) = {
df.withColumn("plusTwo", df("col") + 2)
}
然后定义一个测试数据框
val test = (1 to 10).toDF("col")
test.show(3, false)
/* outputs:
+---+
|col|
+---+
|1 |
|2 |
|3 |
+---+
*/
然后使用 `transform 函数根据您在配置中的参数进行实际转换。
val parameter = 1
val result1 = parameter match {
case 1 => test.transform(addOne)
case 2 => test.transform(addTwo)
}
result1.show(3, false)
/*
+---+-------+
|col|plusOne|
+---+-------+
|1 |2 |
|2 |3 |
|3 |4 |
+---+-------+
*/
如果parameter 是一个不同的值,您可以在下面看到它的表现。
val parameter = 2
// below code can be extracted into a function
val result2 = parameter match {
case 1 => test.transform(addOne)
case 2 => test.transform(addTwo)
}
result2.show(3, false)
/*
Outputs:
+---+-------+
|col|plusTwo|
+---+-------+
|1 |3 |
|2 |4 |
|3 |5 |
+---+-------+
*/