pyspark广播变量如何工作

den*_*s.s 5 python apache-spark

我知道它利用pickle并跨节点运送东西并保存在内存中等等.令我困惑的是为什么在pyspark中使用它的语法工作.

def main():
    sc = SparkContext()
    someValue = rand()
    V = sc.broadcast(someValue)
    A = sc.parallelize().map(worker)

def worker(element):
    element *= V.value
Run Code Online (Sandbox Code Playgroud)

为什么上面的代码没有得到"V"没有定义的投诉?我在pyspark中搜索了与广播相关的源代码,但没有得到任何线索.

Sha*_*Guo 2

来自 Spark 研究论文\n Spark:使用工作集的集群计算\nMatei Zaharia、Mosharaf Chowdhury、Michael J. Franklin、Scott Shenker、Ion Stoica。HotCloud 2010。2010 年 6 月。

\n\n
\n

共享变量:Spark 中的两种类型的共享变量,即广播变量和累加器,是使用具有自定义序列化格式的类来实现的。\n 当创建一个值为 v 的广播变量 b 时,\nv 会保存到 a共享文件系统中的文件。b 的序列化\n 形式是该文件的路径。当在工作节点上查询 b\xe2\x80\x99s 值时,Spark 首先检查 v 是否在本地缓存中,如果不在,则从文件系统中读取。\n我们最初使用 HDFS 来广播变量,但我们正在开发更高效的流媒体广播系统。

\n
\n

  • 谢谢@Shawn,但这并不能回答我关于“语法”的问题。 (3认同)