java spark with column-自定义函数

vq8itlhq  于 2021-05-22  发布在  Spark
关注(0)|答案(1)|浏览(820)

问题,请用java(不是scala或python)给出解决方案
我有一个包含以下数据的Dataframe

colA, colB
23,44
24,64

我想要的是这样的Dataframe

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();
yqkkidmi

yqkkidmi1#

正如注解中所建议的,您应该使用用户定义的函数。假设您有一个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")))

希望对你有帮助

相关问题