在Spark(python)中:
如果sc
是Spark上下文(pyspark.SparkContext
),有什么区别:
r = sc.parallelize([1,2,3,4,5])
和
r = sc.broadcast([1,2,3,4,5])
?
答案 0 :(得分:7)
sc.parallelize(...)
在所有执行者之间传播数据
sc.broadcast(...)
复制每个执行程序的jvm中的数据
答案 1 :(得分:6)
Spark中的RDD只是一个拆分为分区的集合(至少一个)。 每个分区都存在于处理它的执行程序中。 使用sc.parallelize(),您的集合将分配到分配给执行程序的分区中,例如,您可以在执行程序上使用[1,2],在另一个执行程序上使用[3],在另一个上使用[4,5]。通过这种方式,执行程序并行处理分区。 对于GwydionFR所说的广播,传递的参数被复制到每个执行器。