使用hadoop从两个uri提取信息

yzxexxkh  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(265)

假设在hdfs中有一个巨大的稀疏矩阵 matrixX 另一个在 matrixY 我想做一个巨大的矩阵乘法,然后写 matrixY . 我可以从hadoop中的两个不同uri中提取吗?我该怎么做?我看到的所有示例都有一个输入目录和一个输出目录。

nnsrf1az

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 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将执行求和并写入输出。你可以做很多其他的优化,但这应该是第一个开始。

相关问题