问题
你正试图加入两个大表,将所选列从第一个表和第二个表的所有列。
尽管总大小超过设定的限制spark.sql.autoBroadcastJoinThreshold,BroadcastHashJoin使用和Apache返回一个火花OutOfMemorySparkException错误。
org.apache.spark.sql.execution。OutOfMemorySparkException: Size of broadcasted table far exceeds estimates and exceeds limit of spark.driver.maxResultSize=1073741824. You can disable broadcasts for this query using set spark.sql.autoBroadcastJoinThreshold=-1
导致
这是由于火花的规模估计量的限制。
如果估计的大小DataFrames小于之一autoBroadcastJoinThreshold,火花可能使用BroadcastHashJoin执行连接。如果没有足够的可用节点资源适应广播DataFrame、你的工作失败由于内存错误。
解决方案
有三种不同的方法来缓解这个问题。