2013-06-23 53 views
0

我想用hadoop做矩陣向量乘法。我現在有一個小的工作示例:只有一個輸入文件包含矩陣的行,並始終跟隨它所乘的向量。所以每個map-task都會從這個文件中獲得一行和一個向量。矩陣向量乘法與hadoop:在不同文件中的向量和矩陣

現在我想有兩個輸入文件。一個文件應該包含矩陣,另一個文件應該包含Vector。但我不能想到讓Mapper訪問這兩個文件的hadoop方法。

這裏最好的方法是什麼?

感謝您的幫助!

+1

您可以在mapper的setup方法中讀取矢量,並使用它來進行乘法運算。 – zsxwing

+0

有幾種方法可以做到這一點更多的細節,你可以看到http://stackoverflow.com/questions/11059725/is-it-possible-to-have-multiple-inputs-with-multiple-different-mappers-in- hadoop – twid

回答

0

最簡單和最有效的解決方案是直接從HDFS(不是map()輸入)將矢量讀入Mapper的內存中。想必它不是那麼龐大,它不適合記憶。然後,map()只能按行排列矩陣數據。當你接收到每一行時,用矢量將它點出來以產生輸出的一個元素。發出(index,value),然後在Reducer中構建矢量(如果需要)。

+0

我們如何才能得到正確定位的合成向量?如果矩陣在2個HDFS塊周圍的大尺寸,我們將在這2個映射器中得到相同的索引。我們將如何構建最終的向量? –