
# SQL作业中存在join操作，因为自动广播导致内存不足，作业一直运行中
#### 问题现象
SQL作业中存在join操作，作业提交后状态一直是运行中，没有结果返回。
#### 问题根因
Spark SQL作业存在join小表操作时，会触发自动广播所有executor，使得join快速完成。但同时该操作会增加executor的内存消耗，如果executor内存不够时，导致作业运行失败。
#### 解决措施
1. 排查执行的SQL中是否有使用"/\*+ BROADCAST(u) \*/"强制做broadcastjoin。如果有，则需要去掉该标识。
2. 设置spark.sql.autoBroadcastJoinThreshold=-1，具体操作如下：
   1. 登录DLI管理控制台，单击"作业管理 \> SQL作业"，在对应报错作业的"操作"列，单击"编辑"进入到SQL编辑器页面。
   
   2. 单击"设置"，在参数设置中选择"spark.sql.autoBroadcastJoinThreshold"参数，其值设置为"-1"。
   
   3. 重新单击"执行"，运行该作业，观察作业运行结果。
    
 
