使用Hadoop从两个URI中提取信息

时间:2013-03-12 00:53:46

标签: hadoop

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

1 个答案:

答案 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,它将进行求和并写入输出。您可以进行许多其他优化,但这应该是第一次开始。