我想知道 MultipleOutputs vs FSDataOutputStream vs Task Side Effect File 用于创建不同输出文件的优势/差异?
一种。使用多个输出:
MultipleOutputs mos;
void configure()
{
mos.new MultipleOutputs(conf);
}
reduce()
{
mos.getCollector("desired_path", reporter).collect(new Text(key), new Text(val));
}
湾。使用 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() 返回的路径,而不是使用自定义的所需路径。
将所需输出写入输出路径以外的路径的最佳方法是什么?