scala - Scala spark:有效检查条件是否在任何地方匹配?
问题描述
我想要的大致相当于
df.where(<condition>).count() != 0
但我很确定它不够聪明,一旦发现任何此类违规行为就停止。我希望某种聚合器能够做到这一点,但我还没有找到一个?我可以通过max
某种转换来做到这一点,但我再次认为它不一定知道退出(不是特定于 bool,我不确定是否理解没有大于 true 的值)。
更具体地说,我想检查一列是否只包含一个元素。现在我最好的想法是通过获取第一个值并比较所有内容来做到这一点。
解决方案
我会尝试这个选项,它应该更快:
df.where(<condition>).head(1).isEmpty
您还可以尝试将您的条件与 scala 一起定义在一行上exists
(在第一次出现时停止true
):
df.mapPartitions(rows => if(rows.exists(row => <condition>)) Iterator(1) else Iterator.empty).isEmpty
最后,您应该对替代品进行基准测试
推荐阅读
- state - SwiftUI - 通过按钮传递动态数据
- reactjs - Heroku 部署失败 - 无法导入 Sass 文件
- java - 输入后,println 不打印任何内容
- c# - “构建”后代码无法正常工作
- apache-kafka - Spring Kafka (2.2.7.RELEASE) 与。kafka-clients:2.2.1 嵌入式代理启动期间的 IOException
- javascript - Javascript:对象函数语法错误的深度比较
- hyperledger-fabric - 当我尝试使用 Hyperledger Fabric 创建通道时,请求失败
- javascript - 将 useState() 与事件侦听器一起使用时遇到问题。看不到更新的状态
- angular - 未捕获的 ReferenceError:__importDefault 未定义
- c# - 获取距离 x 到两个向量的 Vector2