2015-11-17 144 views
-1

我在Spark集羣中有一個RDD。在客戶端,我調用collect(),然後從收集的數據創建一個java流,並從這個流創建一個CSV文件。Apache Spark:從Spark Cluster讀取RDD

當我在RDD上調用collect()時,我將所有數據都帶入客戶端的內存中,這是我試圖避免的。有什麼方法可以將Spark羣集中的RDD作爲流獲取?

我有一個要求,不要將創建CSV的邏輯帶到Spark集羣並將其保留在客戶端。

我正在使用獨立羣集和Java API。

+3

(前提:我沒有downvoted這個問題),我認爲你應該再讀2-3次你的問題,改換。很難理解你想要做什麼。如果我正確地理解了這個問題,那麼你正在聚合一堆數據(數百萬個對象),但這很重要,以便將它保存在內存中 - 現在你想要以塊的形式處理數據。這是正確的嗎?你有多少個節點?你的設置是什麼?你如何劃分你的數據?你到底想要做什麼?你能發表幾行代碼嗎? – Markon

回答

0

我不是專家,但我想我明白你在問什麼。如果可以的話,請發佈一些代碼以幫助更好地實現它。

現在有一些在每個分區的基礎工作,操作,但我不知道這是要帶你回家,看到toLocalIterator從第一個回答這個問題:Spark: Best practice for retrieving big data from RDD to local machine

你可以控制分區的數量(我相信每個節點)與第二個參數並行化,「切片」,但它沒有很好地記錄。很確定,如果你在Spark編程指南中搜索分區,你會得到一個好主意。

http://spark.apache.org/docs/latest/programming-guide.html

+0

噢是不要打電話collect()打敗了整個目的! – JimLohse