我正在使用广播变量来加入Spark中的操作。但是我遇到了关于从驱动程序加载到执行程序的时间广播的问题。所以我只想加载一次但是用于多个作业(范围应用程序周期)。
答案 0 :(得分:1)
广播变量与作业无关,而与会话/上下文无关。如果您重复使用相同的SparkSession
,则可能会重复使用广播变量。如果我没记错的话,在某些类型的内存压力下,工作人员可以清除广播变量,但如果被引用,它将自动重新广播以满足参考。
答案 1 :(得分:0)
广播变量,可用于缓存所有节点的内存中的值。广播变量允许程序员在每台机器上保留一个只读变量,而不是随副本一起发送它的副本。例如,它们可用于以有效的方式为每个节点提供大型输入数据集的副本。
EdhBroadcast broadcast = new EdhBroadcast(JavaSparkContext);
答案 2 :(得分:0)
不可能使用广播变量向每个工作人员发送一次不可变状态。如果需要变量的本地副本,可以使用它们。
您可以创建rdd和缓存rdd并重复使用。