Почему Spark читает из файла после этапа так быстро? - PullRequest
0 голосов
/ 29 октября 2019

Spark материализует свои результаты на диске после случайного воспроизведения. Выполняя эксперимент, я увидел, что задача Spark считала материализованные данные размером 65 МБ за 1 мс (даже было показано, что некоторые задачи читают это за 0 мс :)). У меня вопрос, как Spark может так быстро читать данные с жесткого диска? Это на самом деле чтение этих данных из файла или из памяти?

Ответ от @ zero323 на в этом сообщении Stackoverflow гласит To disk are written shuffle files. It doesn't mean that data after the shuffle is not kept in memory. Но я не смог найти ни одного официального источника Spark, который говоритчто Spark хранит случайный вывод в памяти, что предпочтительнее при чтении следующей задачей.

Является ли задача Spark чтением случайного вывода с диска или из памяти (если из памяти, я был бы благодарен, если кто-то может указать наофициальный источник).

1 Ответ

0 голосов
/ 29 октября 2019

Выводы Spark Shuffle записываются на диск. Вы можете найти это в Spark Documents в Влияние на производительность * в теме 1004 *.

  • Shuffle также генерирует большое количество промежуточных файлов на диске. Начиная с Spark 1.3 , эти файлы сохраняются до тех пор, пока соответствующие RDD больше не используются и не будут собираться мусором.

  • Это сделано для того, чтобы файлы перестановки не создавались заново, если пересчитывается происхождение. Сборка мусора может происходить только по истечении длительного периода времени, если приложение сохраняет ссылки на эти RDD или если GC не включается часто.

  • Это означает, что длительные задания Spark могут занимать большой объем дискового пространства.

...