0

HDFS に 1 つの巨大疎行列がmatrixXあり、もう 1 つがmatrixYにあり、巨大行列の乗算を実行して に書き込みたいとしmatrixYます。Hadoop で 2 つの異なる URI から描画できますか? どうすればいいですか?私が見たすべての例には、1 つの入力ディレクトリと 1 つの出力ディレクトリがあります。

4

1 に答える 1

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 = 合計 (a の行 * b の列)

行列 A を行優先、行列 b を列優先として格納するのはどうでしょうか。これで、次のマッパーで RowReader の行番号と Columnreader の列番号としてキーを設定し、合計を実行して出力を書き込む同じレデューサーに送信できます。他にも多くの最適化を行うことができますが、それが最初の出発点です。

于 2013-03-12T02:54:10.527 に答える