关于spark.sql.autoBroadcastJoinThreshold设置

2,789 阅读1分钟

大家好,我是怀瑾握瑜,一只大数据萌新,家有两只吞金兽,嘉与嘉,上能code下能teach的全能奶爸

如果您喜欢我的文章,可以[关注⭐]+[点赞👍]+[评论📃],您的三连是我前进的动力,期待与您共同成长~


今天使用spark对一组大数据进行合并作join操作,一直都报下面的错:

Exception in threadbroadcast-exchange-0java.lang.OutOfMemoryError: Not enough memory to build and broadcast the table to all worker nodes

问题来分析说是内存溢出了,也就是说明广播内存不够用。但我不断设整任务的内存资源,无论是executor还是driver的内存都分配多一倍了,但是还是不起作用

spark.sql.autoBroadcastJoinThreshold是刚增加上的参数,在另一个项目中作一些广播限制的操作,再去官网看下此配置的作用

因为经常有一些中间表需要做广播变量,而这个数据本身没法限制,所以直接把这个配置成-1,不设置上限

--conf spark.sql.autoBroadcastJoinThreshold=-1

结束语

如果您喜欢我的文章,可以[关注⭐]+[点赞👍]+[评论📃],您的三连是我前进的动力,期待与您共同成长~

可关注公众号【怀瑾握瑜的嘉与嘉】,获取资源下载方式