我需要检查几个条件,所以我这样过滤了我的RDD:
scala> file.filter(r => r(38)=="0").filter(r => r(2)=="0").filter(r => r(3)=="0").count
作为"&&"?
的替代品是否正确答案 0 :(得分:4)
是的,一系列过滤器在语义上等同于一个带有&&
的过滤器。
file.filter(r => r(38) == "0" && r(2) == "0" && r(3) == "0")
但是,上述变体保证比早期版本更快。这可以通过以下方式建立:
&&
是一个短路运算符,只有当第一个计算结果为true
时才会进行下一次比较。两种情况下的比较次数都是相同(是的!)。
多个过滤器版本涉及RDD的三次传递,而&&
的单个过滤器的一次传递。