Hadoop CompositeInputFormat块矩阵 - 向量乘法

时间:2012-09-04 08:16:06

标签: java hadoop matrix-multiplication pagerank

我正在尝试根据来自http://i.stanford.edu/~ullman/mmds/ch5.pdf第162页的示意图,使用Hadoop实现块矩阵向量乘法算法。我的矩阵将是稀疏的并且向量密集,这正是PageRank中所需的好。假设向量不适合记忆。

我考虑可能的实现的方式是使用CompositeInputFormat并且基本上执行矩阵块与向量块的映射侧连接,并总结对组合器中的最终结果块有贡献的中间结果块/减速器。这种方法与一般的地图侧连接之间的区别在于我需要将矩阵的几个块与一个矢量块连接起来。我知道Hadoop中有关分割,排序等的地图侧连接的要求,并且就分割而言,我会通过为每个块命名相应的一个文件来处理这个问题。对我而言,我需要修改确定哪些文件将被连接的代码,以便Hadoop不再希望从具有相同名称的两个路径中加入文件,而是根据我定义的方案。但是,我不知道这是否是一种有效的方法,以及这部分代码的位置。我查看了Hadoop源代码,但找不到它。

我知道我可以通过缩减端连接来实现这一点,但效率在这里至关重要,因为这种矩阵向量乘法需要大量执行。分布式缓存是不可能的,因为向量不适合内存。

有谁知道如何解决这个问题?

0 个答案:

没有答案