2015-12-22 45 views
0

一般情況下,如何從一個spark任務中提取結果而不需要輸出文件?從Spark(scala)獲取結果並將其傳遞給另一個進程

讓我說,我有一個scala程序,它創建一個火花發射器的工作。

我可以用Futures包裝這個火花工作。一旦完成了火花工作,我怎樣才能得到結果? (1種方式,我之前做過的是將結果寫入文件,然後外部scala程序讀取文件< - 我想避免這種策略)

+2

更好的是制定一個管道,其中星火作業完成,然後又開始工作....如果那不是有利的方式則有星火工作寫入輸出插座或MQ和你的另一程序聽那個Queu即 – Sumit

+0

Carson - 如果上述策略有效,那麼我可以將其作爲答案,如果不是的話,那麼讓我知道您在方法中看到的挑戰。 – Sumit

+0

感謝@Sumit,您可以詳細闡述一下socket/MQ策略嗎?我想進一步探索這個方向。 我喜歡你的想法有一個流策略(而不是基於文件的策略) –

回答

0

對於小的結果集,使用RDD.collect( )將數據集的所有元素作爲驅動程序中的數組返回。

def collect(): Array[T] 

然後
打印到標準輸出作爲管道輸入,例如RDD.collect()。的foreach(print_to_stout)

或通過薩米特的建議,通過以下API編寫的每個元素到外部消息系統:

def foreach(f: (T) ⇒ Unit): Unit 
相關問題