我试图在一列中获取最大值,并编写了以下代码。
val max = df.withColumn("max", lit(df.agg(max($"id")).as[Int].first))
不幸的是,当我运行它时,出现以下错误:
error: recursive value max needs type
val max = df.withColumn("max", lit(df.agg(max($"id")).as[Int].first))
我真的不明白该错误告诉我什么,也找不到关于此功能的任何文档。我写错了吗?也许有更好的方法可以做到这一点?我一直在尝试获取具体示例,但似乎对我没有任何帮助。
答案 0 :(得分:0)
在您的代码中,spark max被误认为是scala max,所以我只将max指定为来自spark。
这将为您提供id列的最大值作为整数值:
%scala
import org.apache.spark.sql.functions.col
val max = df.agg(org.apache.spark.sql.functions.max(col("id"))).collect()(0)(0).asInstanceOf[Int]
Output: max: Int = 6
OR
如果要创建列以存储id的最大值:
%scala
import org.apache.spark.sql.functions._
df.withColumn("max", lit(df.agg(org.apache.spark.sql.functions.max($"id")).as[Int].first))