如何在Scala中并行编写流程文件并写入结果?

Mic*_*ael 1 parallel-processing scala file

这是我上一个问题的后续行动.

假设我并行处理我的文件.现在我想将处理结果写入文件.由于结果不适合内存,我不能等到所有文件的处理完成然后写结果.我必须以某种方式并行处理和写入.

例如:假设我有带数字的文件.文件大小约500M.文件数量大约是200.每个文件都适合内存,但所有文件都不适合.现在我想将这些文件中找到的所有偶数写入另一个文件.

如何在Scala中使用(Futures和Scala parallel collections)?

dre*_*xin 5

在某些时候,你必须同步写作.如果您不想阻止其他线程,则可以使用actor将结果写入文件.这看起来像这样:

class FileWriterActor(path: String) extends Actor {

  val file = ... // init FileWriter

  // this is how you implement an akka actor
  // plain scala actors look a bit different        
  def receive = {
    case x: MyResult => file.write(x.toString)
  }

  override def postStop() = file.close()
}

// usage
val result = ... // calculation stuff
fileWriter ! result
Run Code Online (Sandbox Code Playgroud)