簡體   English   中英

火花流DStream映射與foreachRDD相比,轉換效率更高

[英]spark streaming DStream map vs foreachRDD, which is more efficient for transformation

僅對於轉換,map和foreachRDD可以實現相同的目標,但是哪一個效率更高? 又為什么呢?

例如,對於DStream [Int]:

val newDs1=Ds.map(x=> x+1)
val newDs2=Ds.foreachRDD (rdd=>rdd.map(x=> x+1))

我知道foreachRDD將直接在RDD上運行,但是先通過地圖接縫將DStream轉換為RDD(不確定),因此foreachRDD接縫比map更有效。 但是,map是轉換操作,而foreachRDD是輸出操作。 因此,映射在進行轉換時應該比foreachRDD更有效。 誰知道哪個是對的,為什么? 感謝您的答復。

再添加一個比較:

val newDS3=Ds.transform (rdd=>rdd.map(x=> x+1))

哪種轉換效率更高?

如果檢查類型,則可以自己回答此問題。 foreachRDDUnit因此您擁有的是:

 val newDs2: Unit = Ds.foreachRDD (rdd=>rdd.map(x=> x+1))

您不僅沒有DStream[_] ,而且永遠不會執行內部map (這是惰性的)。

以下兩個:

Ds.map(x=> x+1)
Ds.transform (rdd=>rdd.map(x=> x+1))

就執行而言,它們是相同的,因此使用后者(后者不必要冗長)沒有意義。

暫無
暫無

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

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