何时在Spark中使用广播与添加文件?

时间:2017-09-29 17:07:37

标签: apache-spark pyspark

看起来像addfile和broadcast做类似的事情。他们有什么不同?你什么时候应该使用一个?

3 个答案:

答案 0 :(得分:1)

广播用于代码中需要的变量,它可能是每个任务需要引用的静态列表,来自Broadcast Variables的文档

  

广播变量允许程序员保留只读变量   缓存在每台计算机上,而不是通过任务发送它的副本。   例如,它们可用于为每个节点提供大型副本   以有效的方式输入数据集。 Spark也试图   使用高效的广播算法分配广播变量   降低沟通成本。

添加文件用于在每个节点上创建文件,它可以是jar文件或程序引用的库。

希望这澄清。

干杯!

答案 1 :(得分:0)

Addfile将文件添加到spark。它通常用于加载本地文件以激发。

广播是在spark中加入2个数据集的概念。如果其中一个RDD / DataFrame很小,它可以广播到所有执行程序,以便它可以进行地图连接。

Addfile知道从何处加载文件,但是在广播的情况下,可以分发基础文件,但是在分布式文件之上创建的数据帧可能很小。这可以通过过滤/转换来实现。

答案 2 :(得分:0)

典型用例:

 Use Broadcast for variables / data.

 Use addFile for libraries / custom code etc.

但两者都有例外情况,如果存在大量数据(在我的情况下大约为900MB),我使用addFile机制将文件传递给所有节点,然后在那里加载数据。事实证明,由于我的文件已经采用gzip格式,因此工作速度更快。