假设在hdfs中有一个巨大的稀疏矩阵 matrixX 另一个在 matrixY 我想做一个巨大的矩阵乘法,然后写 matrixY . 我可以从hadoop中的两个不同uri中提取吗?我该怎么做?我看到的所有示例都有一个输入目录和一个输出目录。
matrixX
matrixY
nnsrf1az1#
您可以从以下多个来源读取:
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 a13a21 a22 a23a31 a32 a33b11 b12 b13b21 b22 b23b31 b32 b33型ab=总和(a行b列)把矩阵a存储为行主键,把矩阵b存储为列主键怎么样。现在,您可以在下一个Map器中将键设置为rowreader中的row number和columnreader中的column number,并将其发送到相同的reducer,reducer将执行求和并写入输出。你可以做很多其他的优化,但这应该是第一个开始。
1条答案
按热度按时间nnsrf1az1#
您可以从以下多个来源读取:
假设你需要矩阵a和b:
a11 a12 a13
a21 a22 a23
a31 a32 a33
b11 b12 b13
b21 b22 b23
b31 b32 b33型
ab=总和(a行b列)
把矩阵a存储为行主键,把矩阵b存储为列主键怎么样。现在,您可以在下一个Map器中将键设置为rowreader中的row number和columnreader中的column number,并将其发送到相同的reducer,reducer将执行求和并写入输出。你可以做很多其他的优化,但这应该是第一个开始。