我打算修改Spark Dataframe的一列,以实现以下Hive QL的类似目的:
SELECT Id, MIN(Id) over (PARTITION BY Age) Rep FROM Employees
我的问题是如何在UDF中实现“over(partition by ..)”?
我的电话是这样的:
def _udfuntion = { ... }
val ownfunc = udf(_udfunction)
df.withColumn("Rep", ownfunc($"Id", $"Age"))
答案 0 :(得分:0)
您需要使用用户定义的聚合函数(UDAF)而不是UDF。
有一些很好的例子,例如https://docs.databricks.com/spark/latest/spark-sql/udaf-scala.html 和 https://jaceklaskowski.gitbooks.io/mastering-apache-spark/spark-sql-UserDefinedAggregateFunction.html