输入DF:
A B
1 1
2 1
2 2
3 3
3 1
3 2
3 3
3 4
我正在尝试根据
的组合过滤行(A, Max(B))
输出Df:
A B
1 1
2 3
3 4
我可以用
做到这一点 df.groupBy()
但DF中还有其他列我想要被选中但不希望被包含在GroupBy中 因此,过滤行的条件应该只是这些列而不是DF中的其他列。请提出Ay建议
答案 0 :(得分:0)
根据How to get other columns when using Spark DataFrame groupby?的建议,您可以使用窗口函数
import org.apache.spark.sql.expressions._
import org.apache.spark.sql.functions._
df.withColumn("maxB", max(col("B")).over(Window.partitionBy("A"))).where(...)
其中...
被基于A
和maxB
的谓词替换。