基于Spark DF中2列的组合过滤行

时间:2018-06-15 23:23:42

标签: scala apache-spark apache-spark-sql

输入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建议

1 个答案:

答案 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(...)

其中...被基于AmaxB的谓词替换。