看起来像addfile和broadcast做类似的事情。他们有什么不同?你什么时候应该使用一个?
答案 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格式,因此工作速度更快。