将UDF动态应用于数据框中N列的1到N列

时间:2017-03-15 06:18:37

标签: apache-spark apache-spark-sql spark-dataframe

我有一个架构和列名称来应用UDF。列的名称是用户输入,并且每个输入的数字可以不同。 有没有办法将UDF应用于数据帧中的N列?

试图实现这一目标。 对于具有col1,col2,col3,col4,col5

的模式
  DataFrame newDF = df.withColumn("col2", callUDF("test", (df.col("col2"))));
  or 
  DataFrame newDF = df.withColumn("col2", callUDF("test", (df.col("col2"))))
                 .withColumn("col3", callUDF("test", (df.col("col3"))));
  or
   DataFrame newDF = df.withColumn("col2", callUDF("test", (df.col("col1"))))
                 .withColumn("col3", callUDF("test", (df.col("col3"))))
                 .withColumn("col5", callUDF("test", (df.col("col5"))))
  or for N columns.

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我最终编写代码来动态生成SPARK SQL查询,以便将UDF应用于1到N列。然后将输入数据帧注册为临时表,并使用genererated query。