Apache spark 为什么代码行在一个spark执行器中执行多次

Apache spark 为什么代码行在一个spark执行器中执行多次,apache-spark,Apache Spark,我有一份很有活力的工作,那就是阅读卡夫卡的作品。 我有32名遗嘱执行人。 在映射转换中,我引用了一个对象Foo。 在Foo中,它需要在第一个转换操作上进行初始化(下面的示例)。 我希望每个执行人都能进行一次初始化。 然而,每个执行人都会发生16次。 为什么会这样 object Foo extends Serailizable { var init = false def transform(){ if(!init){ sleep(1

我有一份很有活力的工作,那就是阅读卡夫卡的作品。 我有32名遗嘱执行人。 在映射转换中,我引用了一个对象Foo。 在Foo中,它需要在第一个转换操作上进行初始化(下面的示例)。 我希望每个执行人都能进行一次初始化。 然而,每个执行人都会发生16次。 为什么会这样

object Foo extends Serailizable {
    var init = false     

    def transform(){
       if(!init){ 
          sleep(1000)
          init = true;
       }
    }
}
rdd.map(Foo.transform(_))

只需将初始化设置为singleton,这将确保每个JVM(每个执行器)初始化一次