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