2013-03-12 21 views
0

假設我在HDFS中有一個巨大的稀疏矩陣matrixX,另一個是matrixY,我想進行巨矩陣乘法並寫入matrixY。我可以從Hadoop中的兩個不同的URI中抽取嗎?我該怎麼做呢?我見過的所有例子都有一個輸入目錄和一個輸出目錄。使用Hadoop從兩個URI中提取信息

回答

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中的Column Number並將其發送到同一個Reducer,它將進行求和並寫入輸出。你可以做很多其他的優化,但這應該是第一個開始。