異なる出力ファイルを作成するための MultipleOutputs と FSDataOutputStream と Task Side Effect File の利点/違いを知りたいですか?
a. MultipleOutput の使用:
MultipleOutputs mos;
void configure()
{
mos.new MultipleOutputs(conf);
}
reduce()
{
mos.getCollector("desired_path", reporter).collect(new Text(key), new Text(val));
}
b. FSDataOutputream を使用して、次のようにファイル システム内の目的のパスに出力を書き込みます。
void configure()
{
fs = FileSystem.get(conf);
}
void reduce()
{
Path op = "/custom_path";
FSDataOutputStream dst = fs.create(op);
dst.writeBytes(t+" "+uidi+" "+str_sizeval);
}
c. タスクの副作用ファイルの使用。ここでは、カスタムの目的のパスを使用する代わりに、上記のように FSDataOutputStream を使用して、FileOutputFormat.getWorkOutputPath() によって返されたパスに出力を書き込みます。
出力パス以外のパスに目的の出力を書き込む最良の方法はどれですか?