2015-12-02 30 views
1

我有其处理队列一些火花代码;队列的第一个元素被采用,使用scala Futures构造进行处理,并且在未来完成时采用下一个元素。代码看起来(简化的)如下:火花:使用期货将在群集模式提前结束工作

import scala.concurrent.ExecutionContext.Implicits.global 

def nextExperiment() { 
    Future { ... }.onComplete(x => nextExperiment()) 
} 

当群集(未局部地)上运行该代码,它将只开始处理队列的第一个元素,然后迅速关闭的上下文中,在完成所有元素之前在队列中。如果我删除Future{ }结构,但是,它完全有什么是应该。

这是为什么?

回答

2

嘛,你不显示你在哪里打电话nextExperiment。但考虑到你所看到的,该计划可能只是从这个调用返回,进行该程序,并完成结束。如果要等到所有期货本身完成you need to block until all is done程序之前完成。