Кэш против localCheckpoint и как остановить искру от его удаления? - PullRequest
0 голосов
/ 04 октября 2018

Я понимаю, что localCheckpoint удаляет историю, необходимую для восстановления СДР.И cache сохраняет текущее состояние СДР, поэтому его не нужно перестраивать.

Однако я запутался в нескольких аспектах.Если я делаю localCheckpoint и мне позже понадобится этот RDD в моем коде, я часто получаю Exception о том, что раздел больше не найден.

Я посмотрел на вкладку Storage в sparkUI и там написано, что была сохранена только небольшая часть RDD, например, 17%.

Поэтому я читаю больше и понимаю, что искра отбрасывает старые СДР.Есть ли у Spark способ сохранить его навсегда?

Кроме того, если бы я делал cache вместо localCheckpoint, была бы проблема решена?Но это займет время, так как Spark придется пересчитать раздел?

В целом, я просто хочу сохранить СДР в памяти, чтобы большую часть моей работы можно было объединить обратно в самый конец, но к тому времени, когда я туда доберусь, Спарк уже удалил его.Как мне это решить?

Делает ли localCheckpoint.cache или cache.localCheckpoint что-нибудь?Или одного или другого достаточно?

Ответы [ 2 ]

0 голосов
/ 10 марта 2019

Установите spark.dynamicAllocation.cachedExecutorIdleTimeout на высокое значение, если вы хотите сохранить RDD в памяти в течение долгой части вашей работы.

0 голосов
/ 04 октября 2018

Есть ли причина, по которой вам нужно использовать localCheckpoint против checkpoint?При использовании localCheckpoint вашего усечения без репликации, который быстрее, но гораздо менее надежен, это может быть причиной возникновения проблем.

Общие различия в том, где они сохранены:

cache сохраняет в память (если велика для mem на диск), checkpoint сохраняет непосредственно на диск.cache и persist могут быть перезаписаны, если память заполнится (как вами, так и кем-то еще, если они работают в одном кластере), и будут очищены, если ваш кластер будет завершен или перезапущен.checkpoint будет сохраняться в HDFS или локальном хранилище и будет удалено, только если сделано вручную.Каждый из них имеет разные цели.

Подробнее (настоятельно рекомендуем прочитать):

https://github.com/JerryLead/SparkInternals/blob/master/markdown/english/6-CacheAndCheckpoint.md

Делает ли что-нибудь из localCheckpoint.cache или cache.localCheckpoint?Или одного или другого достаточно?

cache перед вами checkpoint.checkpoint выполняется на своей собственной работе, поэтому, если RDD кэшируется, он будет извлекать из кэша вместо повторного запуска.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...