我们有pyspark进程(以纱线簇模式运行),该进程连接了2个表,并且当表的两面都包含少量数据时,该连接运行良好。 但是,如果一侧有合理数量的数据(例如500万行,大小为2GB),而广播的一侧为空,则联接会导致内存不足错误。
我们要解决的问题是通过以下方式禁用广播加入:
SET spark.sql.autoBroadcastJoinThreshold = -1
我们可以想到的另一种方法是在联接之前检查可能为空的一侧,即,如果一侧为空,则根本不进行联接。
但是有更好的方法解决这个问题吗?还是某种设置问题?