2015-04-05 31 views
2

我非常新的火花並且有特定的與工作流相關的問題。雖然這不是一個真正的編碼相關問題,但它更多的是一個與火花功能相關的問題,我認爲這是適當的。如果你認爲這個問題不適合SO,請隨時將我重定向到正確的網站。將火花數據加載到Mongo/Memcached中以供Webservice使用

所以在這裏: 1.我打算使用Spark的滑動窗口功能消耗一系列請求並計算推薦模型。一旦模型計算完成,Web服務是否可以直接從RDD查詢和使用這些數據?如果有的話,任何人都可以指出我如何實現這一目標的示例代碼?

  1. 如果不是,我想將數據存儲在memcached中,因爲我存儲的數據當前不是太大,主要用於內存中迭代計算和流式處理支持我使用Spark的目的,那麼是否有可能將RDD數據加載到memcached中?我在問,因爲我只能找到Spark的Mongo連接器,找不到Memcached連接器。

任何幫助和特別是特定的代碼示例/鏈接將不勝感激。

在此先感謝。

回答

1

您無法以這種方式直接查詢RDD。把你的Spark作爲一個流處理器。你可以做的是將更新後的模型推送到某個「存儲」,例如數據庫(使用自定義API或JDBC),文件系統或memcached。您甚至可以在Spark代碼中進行Web服務調用。

不管你做什麼,請注意處理每批數據(包括I/O)的時間都在指定的時間間隔內。否則,您有可能最終崩潰的瓶頸風險。

另一個值得注意的情況是,您的模型數據分佈在集羣上的多個RDD分區中(這是當然的默認設置)。如果您的「記錄」順序無關緊要,那麼平行寫出它們就沒問題。如果您需要連續寫出特定的總訂單(並且數據確實不是很大),請致電collect將其納入驅動程序代碼內的一個內存數據結構(這將表示分佈式作業中的網絡流量),然後從那裏寫。

+0

亞,所以如果我在坐在HDFS上的火花簇上運行我猜測mongo-hadoop連接器是爲我走的路。 @DeanWampler謝謝你的解釋,它真的幫助。雅我不介意把它們亂編亂寫,因爲RDD中的每個實體代表一個單獨的實體,所以應該沒問題。只要所有元素都寫入數據庫,我就可以使用它。 – anonuser0428 2015-04-05 18:59:15