如何在Spark scala中的执行者之间广播对象?
问题描述:
我确定我们可以广播变量的值,但我不知道如何在执行者之间传播在驱动程序中创建的对象。我在我的Scala程序中为第三方Java类创建一个对象。我想分享同一个类的实例给所有执行者,而不是创建多个对象。如何在Spark scala中的执行者之间广播对象?
我发现广播方法可以用来广播变量的值。但我不知道这是否可以用于广播对象。请发表您的建议
答
有了广播,您还可以广播对象。请参阅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.
广播变量都应该是只读,所以你应该担心它是相同的实例还是不同的。
是的,我想知道“值”和“对象”是否有区别。我也没有想过在分布式系统上你可以共享一个“同类的实例”,因为每个JVM都有它自己的实例。 – NikoNyrh