假设我在matrixX
的HDFS中有一个巨大的稀疏矩阵,在matrixY
有另一个巨大的稀疏矩阵,我想做一个巨大的矩阵乘法并写入matrixY
。我可以在Hadoop中从两个不同的URI中绘制?我该怎么做呢?我见过的所有例子都有一个输入目录和一个输出目录。
答案 0 :(得分: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 =求和(b的*列的行)
如何将矩阵A存储为行主要,将矩阵b存储为列主要。现在,您可以将键设置为RowReader中的行号和下一个映射器中Columnreader中的列号,并将其发送到相同的reducer,它将进行求和并写入输出。您可以进行许多其他优化,但这应该是第一次开始。