Apache Spark:并行化和广播之间的区别

时间:2016-09-21 10:47:03

标签: apache-spark pyspark

在Spark(python)中:

如果sc是Spark上下文(pyspark.SparkContext),有什么区别:

r = sc.parallelize([1,2,3,4,5])

r = sc.broadcast([1,2,3,4,5])

2 个答案:

答案 0 :(得分:7)

sc.parallelize(...)在所有执行者之间传播数据

sc.broadcast(...)复制每个执行程序的jvm中的数据

答案 1 :(得分:6)

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