2017-02-24 193 views
0

我确定我们可以广播变量的值,但我不知道如何在执行者之间传播在驱动程序中创建的对象。我在我的Scala程序中为第三方Java类创建一个对象。我想分享同一个类的实例给所有执行者,而不是创建多个对象。如何在Spark scala中的执行者之间广播对象?

我发现广播方法可以用来广播变量的值。但我不知道这是否可以用于广播对象。请发表您的建议

回答

0

有了广播,您还可以广播对象。请参阅API广播

broadcast[T](value: T)(implicit arg0: ClassTag[T]): Broadcast[T] 
Broadcast a read-only variable to the cluster, returning a  org.apache.spark.broadcast.Broadcast object for reading it in distributed functions. 

广播变量都应该是只读,所以你应该担心它是相同的实例还是不同的。

+0

是的,我想知道“值”和“对象”是否有区别。我也没有想过在分布式系统上你可以共享一个“同类的实例”,因为每个JVM都有它自己的实例。 – NikoNyrh