代码之家  ›  专栏  ›  技术社区  ›  user3407267

如何基于Spark中包含的所有内容进行过滤?

  •  0
  • user3407267  · 技术社区  · 7 年前

    val df = Seq(
        ("A",11,5),
        ("A",12,10),
        ("A",13,1),
        ("B",11,5),
        ("B",14,5),
        ("B",13,5)
        ).toDF("id","type","value")
    
    df.groupBy($"id").agg(collect_set("value")).show(false)
    
    +---+------------------+
    |id |collect_set(value)|
    +---+------------------+
    |B  |[5]               |
    |A  |[1, 5, 10]        |
    +---+------------------+
    

    我需要过滤ID(或唯一ID的计数),其中集合中的所有值都小于5(或任何数字)。例如,在上述df中 只有B的值都小于5。

    有人能告诉我怎么做吗?

    1 回复  |  直到 7 年前
        1
  •  0
  •   余杰水    7 年前
    df.groupBy($"id")
      .agg(collect_set("value"), max($"value").as("max_value"))
      .filter($"max_value" <= 5)
      .show(false)
    
    推荐文章