2013-06-23 51 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个映射器中得到相同的索引。我们将如何构建最终的向量? –