Java Spark with Column-自定义函数
问题,请给出Java(不是scala或python)的解决方案 我有一个包含以下数据的数据框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
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中似乎不起作用-它不允许我使用多个变量