簡體   English   中英

很少條件過濾Apache Spark

[英]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")

但是,可以保證上述變體比早期版本要快。 這可以通過以下方式建立:

  1. &&是短路運算符,只有在第一個比較結果為true時,才會進行下一個比較。 兩種情況下的比較次數將相同 (是!)。

  2. 多過濾器版本涉及RDD上的三遍,而使用&&的單個過濾器則為一遍。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM