1
我需要檢查一些條件,讓我過濾我RDD這樣:幾個條件過濾阿帕奇星火
scala> file.filter(r => r(38)=="0").filter(r => r(2)=="0").filter(r => r(3)=="0").count
它是正確的爲「& &」的方法嗎?
我需要檢查一些條件,讓我過濾我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的三次通過與單次過濾器的一次通過,其中&&
。
是的,它當然會和&&一樣。不知道哪個會更有效 –
我認爲這是個問題 - 問題是:哪個更有效? –
@ david-griffin是的,如果我可以使用這種表達方式,並且它與使用「&&」相同的效率,那就像是雙重問題) –