2016-09-21 99 views
0

之间的区别在火花(蟒蛇):阿帕奇星火:并行化和广播

如果sc是星火上下文(pyspark.SparkContext),之间有什么区别:

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

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

+4

第一个创建[rdd](http://spark.apache.org/docs/latest/programming-guide.html#resilient-distributed-datasets-rdds),另一个是[广播变量](http ://spark.apache.org/docs/latest/programming-guide.html#broadcast-variables) – mtoto

回答

3

的RDD Spark中的JVM拷贝数据仅是一个集合划分为分区(至少一个)。每个分区都驻留在一个处理它的执行器上。 使用sc.parallelize(),您的集合在分配给执行者的分区中被分割,例如,您可以在执行程序上有[1,2],在另一个上有[4,5]。这样执行者并行处理分区。 与GwydionFR所说的广播一样,传递的参数被复制到每个执行者。

3

sc.parallelize(...)传遍执行人

sc.broadcast(...)之间的数据在每个执行

相关问题