2017-06-13 41 views
0

在我们的应用程序中,我们在单独的查询中多次与多个其他数据框(不总是相同的连接列)一起加入相同的数据帧。broadcast()多次使用相同的df。它被缓存了吗?

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

我的问题:

  • 如果同一DF拿到转播多次,将转移出现一次(广播数据以某种方式缓存在执行器),或者多次?
  • 如果连接涉及到不同的cols,它也会被缓存,或者什么是广播取决于连接密钥?

回答

-1

Spark优化器在产品发展时使用更改的启发式方法。知道如何处理您的加入的唯一方法是通过explain。请参阅this presentation以获取有关如何优化连接的信息。

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

+0

如果你可以指出你指的是什么代码,那会很好。这不是我在Spark 2.1代码中看到的。 – mathieu

+0

我知道解释()。实际上,explain()不知道我的代码!尤其是它不知道我会一遍又一遍地重复播放同样的df。所以,如果广播数据以某种方式缓存,我可以提示它广播我的连接的右侧... – mathieu

相关问题