有没有办法强制更新火花累积器?

时间:2019-01-02 11:23:04

标签: scala apache-spark asynchronous

我想在工人中做异步工作,但是累加器不申请驱动程序,因为已经调用了updateAccumulators方法。

问题是updateAccumulators是私有的,所以我的问题是:是否有一种方法可以强制使用它,或者有另一种方法可以完成我需要的事情>

   val partiotionsDone =rdd.sparkContext.longAccumulator("partiotionsDone")
   rdd.foreachPartitionAsync { rows =>

   Future {
   val ingestion = ingestRows(rows)
   ingestion onSuccess{
    case _=> {
      partiotionsDone.add(1)
    }
 }
 }

 runTaskEvery(5 seconds, 
        func= ()=> println("partitionsFinished:${partiotionsDone.value}"),
        whenDone=doFinalWork)

runTaskEvery仅打印0个值-尽管调试器显示partiotionsDone.add(1)已成功完成。当然,如果我在等待未来,那一切都会奏效-但这里的重点并不是要这么做

0 个答案:

没有答案