Java Spark with Column-自定义函数

Java Spark with Column-自定义函数,java,dataframe,apache-spark,apache-spark-sql,Java,Dataframe,Apache Spark,Apache Spark Sql,问题,请给出Java(不是scala或python)的解决方案 我有一个包含以下数据的数据框 colA, colB 23,44 24,64 我想要的是这样的数据帧 colA, colB, colC 23,44, result of myFunction(23,24) 24,64, result of myFunction(23,24) 基本上,我想在java中向dataframe添加一个列,其中新列的值是通过将colA和colB的值放入一个返回字符串的复杂函数来找到的 这是我尝试过的,但是c

问题,请给出Java(不是scala或python)的解决方案

我有一个包含以下数据的数据框

colA, colB
23,44
24,64
我想要的是这样的数据帧

colA, colB, colC
23,44, result of myFunction(23,24)
24,64, result of myFunction(23,24)
基本上,我想在java中向dataframe添加一个列,其中新列的值是通过将colA和colB的值放入一个返回字符串的复杂函数来找到的

这是我尝试过的,但是complexFunction的参数似乎只是名称“colA”,而不是colA中的值

myDataFrame.withColumn("ststs", (complexFunction(myDataFrame.col("colA")))).show();

正如注释中所建议的,您应该使用用户定义的函数。 假设您有一个myFunction方法,该方法执行复杂的处理:

val myFunction : (Int, Int) => String = (colA, colB) => {...}
然后,您只需将函数转换为udf,并将其应用于a列和B列:

import org.apache.spark.sql.functions.{udf, col}

val myFunctionUdf = udf(myFunction)
myDataFrame.withColumn("colC", myFunctionUdf(col("colA"), col("colB")))

我希望它能有所帮助

这正是Spark中用户定义函数(UDF)的用途:请看,否则这在java中似乎不起作用-它不允许我使用多个变量