Apache Spark:parallelize和broadcast的区别

10
在Spark(Python)中:
如果sc是一个Spark上下文(pyspark.SparkContext),那么以下两种方式有什么区别? r = sc.parallelize([1,2,3,4,5])r = sc.broadcast([1,2,3,4,5])

4
第一段代码创建了一个rdd,第二段代码创建了一个broadcast variable - mtoto
2个回答

11

sc.parallelize(...) 将数据分发给所有执行器。

sc.broadcast(...) 将数据复制到每个执行器的 JVM 中。


10
在Spark中,RDD只是一个被分成至少一个分区的集合。每个分区都存在于处理它的执行者上。使用sc.parallelize(),您的集合将被分成分配给执行者的分区,例如,您可以在一个执行者上拥有[1,2],在另一个执行者上拥有[3],在另一个执行者上拥有[4,5]。通过这种方式,执行者并行处理分区。使用广播时,如GwydionFR所说,传递的参数会被复制到每个执行者。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接