我有一個火花應用程序,其中我需要從執行程序的數據驅動程序,我正在使用collect()
。但是,我也遇到了toLocalIterator()
。據我在互聯網上閱讀了toLocalIterator()
,它返回一個迭代器,而不是立即發送整個RDD,所以它具有更好的內存性能,但速度如何?當涉及到執行/計算時間時,collect()
和toLocalIterator()
之間的性能如何?這是更快的火花,collect()或toLocalIterator()
1
A
回答
1
這導致多火花的作業,如果輸入RDD是寬轉換的結果(例如,具有不同的partitioners加入),以避免重新計算輸入RDD應緩存第一。
這意味着,在最壞的情況下(沒有緩存的話)也可以是正的分區倍collect
更加昂貴。即使數據爲cached
,在大型數據集上啓動多個Spark作業的開銷可能很大。然而,較低的內存佔用量可以部分彌補這一缺陷,並在特定配置上加深。
總的來說,這兩種方法效率低下,應該避免在大型數據集上使用。
0
對於toLocalIterator,它用於將散佈在羣集中的RDD中的數據收集到一個節點中,該程序正在運行該節點,並對同一節點中的所有數據執行一些操作。它與collect方法類似,但不是返回一個List,而是返回一個Iterator。
因此,在使用foreach將函數應用於RDD之後,可以調用toLocalIterator來獲取RDD的所有內容的迭代器並對其進行處理。但是,請記住,如果RDD非常大,則可能會遇到內存問題。如果您想在執行所需操作後再將其轉換爲RDD,請使用SparkContext將其並行化。
相關問題
- 1. 這是火花流或內存泄漏的錯誤嗎?
- 2. 要火花還是不火花?
- 3. 這是更快:用於或的foreach
- 4. 這是更快的mysqli_prepare或mysqli_query?
- 5. 這是一個更快的Hbase或Hypertable?
- 6. 這是更快,ImageMagick的類或者exec()
- 7. Spark coalesce vs collect,哪一個更快?
- 8. APARCH火花,NotSerializableException:這裏org.apache.hadoop.io.Text
- 9. 這是更快(我== 0)或(I')
- 10. 這是更快,序列化,ini或XML
- 11. 火花2到火花1.6
- 12. 使用火花與笨處理更新的火花
- 13. H20與火花水的火花差異
- 14. 無法火花更新
- 15. 什麼是RDD火花中最快的功能
- 16. 通過火花更快地讀取blob存儲區
- 17. 火花:如何從火花外殼運行火花文件
- 18. 火花
- 19. 火花
- 20. 火花
- 21. 火花
- 22. 什麼是星系火花?
- 23. 什麼是在火花流
- 24. 火花UI是顯示
- 25. 的火花
- 26. 火花:火花CSV時間過長
- 27. 火花采用火花CSV失敗
- 28. Scala的火花卡桑德拉更新或上主鍵匹配
- 29. 火花蓄電池 - 這是在執行Vs的
- 30. 這個複雜的邏輯是否可以用在火花?
RDD.toLocalIterator方法可以用更有效的方式編寫來完成這項工作。它使用runJob來評估每個步驟中只有一個分區。所以,在這種情況下,LocalIterator()會更快 –