broadcast()多次相同的df。它被缓存了吗?

时间:2017-06-13 15:16:48

标签: apache-spark apache-spark-sql spark-dataframe

在我们的应用程序中,我们在不同的查询中多次与其他几个数据帧(并非总是相同的加入列)连接相同的数据帧。

这个左侧df不是很大,所以广播提示可能是有益的。

我的问题:

  • 如果同一个df多次广播,转移会发生一次(广播数据以某种方式缓存在执行者身上),还是多次?
  • 如果联接涉及不同的cols,它也会被缓存,或者什么是广播取决于连接键?

1 个答案:

答案 0 :(得分:-1)

Spark优化器在产品发展过程中使用变化的启发式方法。了解如何处理联接的唯一方法是通过explain。请查看this presentation,了解有关如何优化联接的信息。

关于同一数据帧的重复广播连接的具体问题,Spark是否会一次或多次广播数据帧将取决于工作者的内存状态。如果最初广播的数据帧仍然存在于工作人员中,那么Spark将不会再次广播它(从我记得的一段时间内读取代码)。