什么是Scala方式并行处理文件,背压?

时间:2015-07-29 11:08:02

标签: scala parallel-processing backpressure

以下代码将逐行读取文件,为每一行创建一个任务,然后将其排队到执行程序。如果执行程序的队列已满,则从文件读取将停止,直到再次出现空间为止。

我在SO中查看了一些建议,但是他们都要求将文件的全部内容读入内存,或者次优调度(例如,读取100行,并行处理它们,只有在完成之后,才能读取下一个100行)。我也不想使用像Akka这样的库。

实现这一目标的Scala方法是什么,没有这些缺点?

$

val exec = executorWithBoundedQueue() val lines = Source.fromFile(sourceFile, cs).getLines() lines.map { l => exec.submit(new Callable[String] { override def call(): String = doStuff(l) }) }.foreach { s => consume(s.get()) } exec.shutdown()

的说明性定义
executorWithBoundedQueue

0 个答案:

没有答案