【问题标题】:Java Spark withColumn - custom functionJava Spark withColumn - 自定义函数
【发布时间】:2021-01-28 09:19:10
【问题描述】:

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

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

colA, colB
23,44
24,64

我想要的是这样的数据框

colA, colB, colC
23,44, result of myFunction(23,24)
24,64, result of myFunction(23,24)

基本上我想在 java 中的数据框中添加一列,其中新列的值是通过将 colA 和 colB 的值放入一个返回字符串的复杂函数来找到的。

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

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

【问题讨论】:

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


【解决方案1】:

按照 cmets 中的建议,您应该使用用户定义函数。 假设您有一个执行复杂处理的 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")))

希望对你有帮助

【讨论】:

  • 这似乎在 java 中不起作用 - 它不允许我处理多个变量
猜你喜欢
  • 2023-04-03
  • 1970-01-01
  • 2018-12-26
  • 1970-01-01
  • 1970-01-01
  • 2020-10-30
  • 1970-01-01
  • 2011-10-23
  • 2017-12-03
相关资源
最近更新 更多