Это хороший вопрос, потому что мы слышим о памяти Spark vs. Hadoop, поэтому немного сбивает с толку. Документы ужасные, но я проверил несколько вещей и проверил наблюдения, оглядываясь по сторонам, чтобы найти самый превосходный источник: http://hydronitrogen.com/apache-spark-shuffles-explained-in-depth.html
Предполагая, что было вызвано Действие - чтобы избежать очевидного комментария, если этоне указано, если мы не говорим о ResultStage и широковещательном соединении, то речь идет о ShuffleMapStage. Сначала мы рассмотрим RDD.
Затем, заимствуя из URL:
- DAG-зависимость, включающая случайное перемешивание, означает создание отдельной стадии.
- За операциями карты следуют операции уменьшения и карты и т. Д.
ТЕКУЩИЙ ЭТАП
- ВсеОперации карты (слитые) выполняются внутри стадии.
- Требование следующей стадии, операция уменьшения - например, reduByKey, означает, что выходные данные хешируются или сортируются по ключу (K) вконец операций Map текущей стадии.
- Эти сгруппированные данные записываются на диск на рабочем месте, где находится Executor, или в хранилище, привязанное к этой версии Cloud. (Я бы подумал, что в памяти это возможно, если данных мало, но это архитектурный подход Spark, как указано в документации.)
- ShuffleManager уведомляется о том, что хэшированные, сопоставленные данные доступны для потребленияследующий этап. ShuffleManager отслеживает все ключи / местоположения после выполнения всей работы на стороне карты.
СЛЕДУЮЩИЙ ЭТАП
- Следующая стадия, будучи сокращением, затем получает данные из этих мест, консультируясь с Shuffle Manager и используя Block Manager.
- Исполнитель может быть повторно использован или быть новым на другом Работнике, или другой Исполнитель на том же Работнике.
Итак, я понимаю, что архитектурно, Стадии означаютзапись на диск, даже если достаточно памяти. Учитывая ограниченные ресурсы Worker, имеет смысл, что запись на диск происходит для этого типа операции. Более важным моментом, конечно же, является реализация «Сокращение карты». Я суммировал отличные посты, это ваш канонический источник.
Конечно, отказоустойчивости способствует эта настойчивость, меньше работы по перерасчету.
Подобные аспекты применимы к DF.