Apache spark spark异步接口的部分结果?
是否有可能取消一个spark future,并使用处理过的元素获得更小的RDD Spark异步操作在此处“记录在案” 未来本身也有一系列丰富的功能Apache spark spark异步接口的部分结果?,apache-spark,Apache Spark,是否有可能取消一个spark future,并使用处理过的元素获得更小的RDD Spark异步操作在此处“记录在案” 未来本身也有一系列丰富的功能 我所考虑的用例是拥有一个非常巨大的映射,它可以在30分钟的计算后中止,并且仍然收集——甚至迭代或保存对象文件——已经有效映射的RDD的子集 FutureAction.cancel会导致失败(请参阅),因此无法使用它获得部分结果。我认为没有办法通过异步API来实现这一点 相反,您可以在30分钟后停止处理输入 val stopTime = Syste
我所考虑的用例是拥有一个非常巨大的映射,它可以在30分钟的计算后中止,并且仍然收集——甚至迭代或保存对象文件——已经有效映射的RDD的子集
FutureAction.cancel
会导致失败(请参阅),因此无法使用它获得部分结果。我认为没有办法通过异步API来实现这一点
相反,您可以在30分钟后停止处理输入
val stopTime = System.currentTimeMillis + 30 * 60 * 1000 // 30 minutes from now.
rdd.mapPartitions { partition =>
if (System.currentTimeMillis < stopTime) partition.map {
// Process it like usual.
???
} else {
// Time's up. Don't process anything.
Iterator()
}
}
val stopTime=System.currentTimeMillis+30*60*1000//30分钟后。
rdd.mapPartitions{partition=>
if(System.currentTimeMillis
请记住,这只会在所有洗牌依赖项完成后产生影响。(即使30分钟过去了,它也无法停止执行洗牌。):-)我想所有异步函数也未经测试,至少在生产现场是这样。