2014-10-27 70 views
2

我正在嘗試對來自多個Cassandra表的數據運行Spark作業,這些表分組爲作業的一部分。我試圖用一個巨大的數據集13m數據點來結束運行,並且它已經失敗了多個點。當我解決這些故障並繼續前進時,我遇到了下一個我修復的問題,並再次重新開始工作。有沒有辦法加快實際數據的測試周期,以便我可以從特定檢查點重新啓動/恢復以前失敗的作業?是否有可能恢復失敗的Apache Spark作業?

回答

5

您可以在不同的中點檢查RDD到磁盤,如果有必要,您可以從這裏重新啓動RDD。您將不得不將中間體保存爲序列文件或文本文件,並且要做一些工作以確保所有內容都乾淨利落地從磁盤傳出。

我覺得它更有用的啓動spark-shell並在那裏建立我的數據流。如果您可以識別出具有代表性的數據子集,甚至更好。一旦進入REPL,您可以創建RDD,檢查第一個值或取(100)並將其打印到標準輸出,計算各種結果數據集等等。 REPL是什麼讓火花10倍比我對hadoop更有效率。

一旦我在REPL中構建了一個轉換和操作流程,我就可以得到我需要的結果,然後我可以將它形成一個scala文件並重構爲clean;提取可重用和單元測試的函數,調整並行性,無論如何。

當我需要擴展數據流時,經常會發現自己回到REPL,因此我從我的scala文件中複製並粘貼代碼以獲得良好的起點,並嘗試從此處擴展。