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

Lio*_*ior 7 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])

Gwy*_*nFR 9

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

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


ppa*_*rno 6

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