Good to know that the suggestion from Ram works in some cases. I'd like to mention that I stumbled on this exception a couple of times (including the one described here).
Much of the time, it was due to almost silent OOMs on some executor. Check on SparkUI for failed tasks, last column of this table: You may notice OOM messages.
If understand well spark internals, the broadcasted data passes through the driver. So the driver has some thread mechanism to collect the data from executors, and send it back to all. If at some point an executor fails, you may end up with these timeouts.