Scala 基于Spark DF中2列的组合筛选行
输入DF:Scala 基于Spark DF中2列的组合筛选行,scala,apache-spark,apache-spark-sql,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 我可以用它来做
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中的其他列。所有建议请>如中所建议的,您可以使用窗口功能
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
的谓词替换