首页 > 解决方案 > Scala spark:有效检查条件是否在任何地方匹配?

问题描述

我想要的大致相当于

df.where(<condition>).count() != 0

但我很确定它不够聪明,一旦发现任何此类违规行为就停止。我希望某种聚合器能够做到这一点,但我还没有找到一个?我可以通过max某种转换来做到这一点,但我再次认为它不一定知道退出(不是特定于 bool,我不确定是否理解没有大于 true 的值)。

更具体地说,我想检查一列是否只包含一个元素。现在我最好的想法是通过获取第一个值并比较所有内容来做到这一点。

标签: scalaapache-spark

解决方案


我会尝试这个选项,它应该更快:

df.where(<condition>).head(1).isEmpty

您还可以尝试将您的条件与 scala 一起定义在一行上exists(在第一次出现时停止true):

df.mapPartitions(rows => if(rows.exists(row => <condition>)) Iterator(1) else Iterator.empty).isEmpty

最后,您应该对替代品进行基准测试


推荐阅读