0

假设我在 HDFS 中有一个巨大的稀疏矩阵,matrixX另一个在matrixY,我想做一个巨大的矩阵乘法并写入matrixY. 我可以从 Hadoop 中的两个不同 URI 中提取信息吗?我该怎么做呢?我见过的所有示例都有一个输入目录和一个输出目录。

4

1 回答 1

0

您可以从以下多个来源阅读:

MultipleInputs.addInputPath(jobConf, MultipleInputs.addInputPath(jobConf, 
                     new Path(MatixX),       
                     TextInputFormat.class, 
                     ColumnReaderMapper.class);

MultipleInputs.addInputPath(jobConf, 
                     new Path(MatirxY), 
                     TextInputFormat.class, 
                     RowReaderMapper.class);

假设你必须矩阵 A 和 B:

a11 a12 a13

a21 a22 a23

a31 a32 a33

b11 b12 b13

b21 b22 b23

b31 b32 b33

A * B = 总和(a 的行 * b 的列)

如何将矩阵 A 存储为主要行,将矩阵 b 存储为主要列。现在,您可以在下一个映射器中将键设置为 RowReader 中的行号和 Columnreader 中的列号,并将其发送到将进行求和并写入输出的同一个 reducer。您可以进行许多其他优化,但这应该是第一次开始。

于 2013-03-12T02:54:10.527 回答