2

Я новичок в Spark. Я читал в нескольких местах, что использование кеша() на RDD приведет к его сохранению в памяти, но я до сих пор не нашел четких указаний или эмпирических правил «Как определить максимальный размер данных», втиснуть в память? Что произойдет, если количество данных, которые я вызываю «кеш», превышает память? Может ли это привести к тому, что моя работа завершится неудачей или она по-прежнему будет иметь заметное влияние на производительность кластера?Что произойдет, если данные не могут поместиться в память с кешем() в Spark?

Спасибо!

ответ

6

Как четко указано в the official documentation с MEMORY_ONLY персистенции (эквивалент cache):

Если РДД не помещается в памяти, некоторые разделы не будут кэшироваться и будут пересчитаны на лету каждый раз они нужны.

Даже если данные вписываются в память, они могут быть выселены, если появятся новые данные. На практике кэширование является скорее намеком, чем контрактом. Вы не можете зависеть от кэширования, но вам не обязательно, если это удастся.

Смотрите также: