[英]Few conditions filter 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")
但是,可以保證上述變體比早期版本要快。 這可以通過以下方式建立:
&&
是短路運算符,只有在第一個比較結果為true
時,才會進行下一個比較。 兩種情況下的比較次數將相同 (是!)。
多過濾器版本涉及RDD上的三遍,而使用&&
的單個過濾器則為一遍。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.