Я понимаю, что localCheckpoint
удаляет историю, необходимую для восстановления СДР.И cache
сохраняет текущее состояние СДР, поэтому его не нужно перестраивать.
Однако я запутался в нескольких аспектах.Если я делаю localCheckpoint
и мне позже понадобится этот RDD в моем коде, я часто получаю Exception
о том, что раздел больше не найден.
Я посмотрел на вкладку Storage
в sparkUI и там написано, что была сохранена только небольшая часть RDD, например, 17%.
Поэтому я читаю больше и понимаю, что искра отбрасывает старые СДР.Есть ли у Spark способ сохранить его навсегда?
Кроме того, если бы я делал cache
вместо localCheckpoint
, была бы проблема решена?Но это займет время, так как Spark придется пересчитать раздел?
В целом, я просто хочу сохранить СДР в памяти, чтобы большую часть моей работы можно было объединить обратно в самый конец, но к тому времени, когда я туда доберусь, Спарк уже удалил его.Как мне это решить?
Делает ли localCheckpoint.cache
или cache.localCheckpoint
что-нибудь?Или одного или другого достаточно?