【问题标题】:filter rows based on combination of 2 columns in Spark DF基于 Spark DF 中 2 列的组合过滤行
【发布时间】:2018-06-15 23:23:42
【问题描述】:

输入 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 中的其他列。请给个建议>

【问题讨论】:

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


    【解决方案1】:

    正如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 的谓词。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-04
      相关资源
      最近更新 更多