Работает с повреждением удаленного блока при неудачном запросе, если для spark.sql.autoBroadcastJoinThreshold установлено значение 10 МБ
- Подтвердите наличие 20 ГБ executor.memory и 16 ГБ driver.memory
- установить spark.sql.autoBroadcastJoinThreshold в -1, запрос выполнен успешно
- установить spark.sql.autoBroadcastJoinThreshold в 10485760, запрос не выполнен
- сообщение об ошибке
Вызывается: java.io.IOException: org.apache.spark.SparkException: поврежденный удаленный блок broadcast_477_piece0 для broadcast_477: 298778625! = -992055931 в org.apache.spark.util.Utils $ .tryOrIOException (Utils.scala: 1350) в org.apache.spark.broadcast.TorrentBroadcast.readBroadcastBlock (TorrentBroadcast.scala: 207) в org.apache.spark.broadcast.TorrentBroadcast._value $ lzycompute (TorrentBroadcast.scala: 66) в org.apache.spark.broad .TorrentBroadcast._value (TorrentBroadcast.scala: 66) в org.apache.spark.broadcast.TorrentBroadcast.getValue (TorrentBroadcast.scala: 96)
Я оставил внешнее соединение таблицей 5 ГБ с несколькими таблицами классов МБ, что имеет смысл использовать широковещательное соединение.
Наблюдение, которое у меня есть, - это 1 таблица с 24 МБ, которая также транслируется на https://issues.apache.org/jira/browse/SPARK-27505
spark.sql ( ""»
выбрать из
5ГБ таблица левого внешнего соединения
5 МБ таблица левого внешнего соединения
1 МБ таблица левого внешнего соединения
24 МБ таблица левого внешнего соединения
1 МБ таблица
"" ") .write.mode (" перезаписать "). saveAsTable (" новая таблица ")
мне не имеет смысла транслировать таблицу 24 МБ. Это не должно и запрос должен быть выполнен успешно.