我們在獨立模式下運行Spark,並在240GB「大型」EC2框中使用3個節點將讀取到DataFrame中的三個CSV文件合併爲JavaRDD,使用s3a在S3上輸出CSV部分文件。Spark Stand Alone - 最後一步saveAsTextFile花費很多時間使用很少的資源編寫CSV文件
我們可以從Spark UI中看到第一階段的讀取和合並,以達到預期的100%CPU的最終JavaRDD運行,但使用saveAsTextFile at package.scala:179
在CSV文件中寫出的最後階段會在很長時間內「卡住」 3個節點中的2個,其中32個任務中的2個需要花費數小時(盒的CPU佔用率爲6%,內存佔用率爲86%,網絡IO爲15kb/s,磁盤IO整個週期爲0)。
我們正在讀取和寫入未壓縮的CSV(我們發現未壓縮的速度比gzipped CSV快得多),在三個輸入數據幀的每一個上都有重新分區16,並且不會共享寫入。
希望得到任何提示,我們可以調查爲什麼最後階段需要花費很多時間在我們的獨立本地羣集中的3個節點中的2個上做很少的工作。
非常感謝
--- UPDATE ---
我試着寫到本地磁盤,而不是S3A和症狀是相同的 - 的32個任務2在最後階段saveAsTextFile
「被困「幾個小時:
感謝。我嘗試過,但症狀是一樣的,沒有明顯的變化。 – user894199