我想知道如果我们广播较大的表并将其加入到较小的表中会发生什么。另外,如果我们有两个同样大的表,在这种情况下使用广播连接会发生什么?
有几件事需要考虑:
-
火花上限:Spark支持最大8GB的广播表。如果你的广播对象超过这个数量,它就会失败。
-
驱动程序和执行程序内存:由于该表会被复制到driver的内存中,然后再复制到executors中,只要你有足够的内存,就应该能够广播成功。
-
表现:如果被广播,你的一部分记忆将被保留。因此,剩下的内容将用于进一步的操作,这可能会使其变慢。 (例如,如果 executor_memory 为 8 GB,则广播变量为 6 GB)
因此,从您的问题来看,广播的行为取决于您广播的内容,无论连接表是大还是小都无关紧要。广播是一项独立的功能。 Spark 在 Joins 中使用了此功能。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)