Scala 很少有条件过滤ApacheSpark

Scala 很少有条件过滤ApacheSpark,scala,apache-spark,Scala,Apache Spark,我需要检查一些条件,因此我通过以下方式过滤我的RDD: scala> file.filter(r => r(38)=="0").filter(r => r(2)=="0").filter(r => r(3)=="0").count 它作为“&&”的替代品是否正确?是的,在您的情况下,一系列过滤器在语义上等同于一个带有&&的过滤器 file.filter(r=>r(38)=“0”和&r(2)=“0”和&r(3)=“0”) 但是,上述变体保证比早期版本更快。这可以通过以下方

我需要检查一些条件,因此我通过以下方式过滤我的RDD:

scala> file.filter(r => r(38)=="0").filter(r => r(2)=="0").filter(r => r(3)=="0").count

它作为“&&”的替代品是否正确?

是的,在您的情况下,一系列过滤器在语义上等同于一个带有
&&
的过滤器

file.filter(r=>r(38)=“0”和&r(2)=“0”和&r(3)=“0”)

但是,上述变体保证比早期版本更快。这可以通过以下方式建立:

  • &&
    是一个短路运算符,只有当第一个运算符的计算结果为
    true
    时,才会进行下一次比较。两种情况下的比较次数相同(是!)

  • 多过滤器版本涉及对RDD进行三次过滤,而对带有
    &
    的单个过滤器进行一次过滤


  • 是的,在您的例子中,一系列过滤器在语义上等同于一个过滤器,带有
    &&

    file.filter(r=>r(38)=“0”和&r(2)=“0”和&r(3)=“0”)

    但是,上述变体保证比早期版本更快。这可以通过以下方式建立:

  • &&
    是一个短路运算符,只有当第一个运算符的计算结果为
    true
    时,才会进行下一次比较。两种情况下的比较次数相同(是!)

  • 多过滤器版本涉及对RDD进行三次过滤,而对带有
    &
    的单个过滤器进行一次过滤


  • 是的,当然,它会像&&&。不确定哪一个会更有效我想这就是问题所在——这就是问题所在:哪一个更有效?@david griffin是的,如果我能使用这样的表达,这就像是双重问题,如果它与使用“&&”一样有效,是的,它当然会像&&&”一样有效。不确定哪一个会更有效我想这就是问题所在——这就是问题所在:哪一个更有效?@david griffin是的,如果我能使用这样的表达,这就像是双重问题,如果它与使用“&&”的效率相同)