Ответ 1
Попробуйте использовать unpersist()
(источник).
Я использовал cache()
для кэширования данных в памяти, но я понял, чтобы увидеть производительность без кэшированных данных, которые мне нужны, чтобы удалить их для удаления данных из памяти:
rdd.cache();
//doing some computation
...
rdd.uncache()
но я получил сообщение об ошибке:
Значение uncache не является членом org.apache.spark.rdd.RDD [(Int, Array [Float])]
Я не знаю, как сделать uncache тогда!
Попробуйте использовать unpersist()
(источник).
Функция uncache не существует. Я думаю, что вы искали непервиста. Что по Spark ScalaDoc помечает RDD как непостоянный и удаляет из него все блоки из памяти и диска.
Если вы кешируете исходные данные в RDD
, используя .cache()
или Вы объявили небольшую память.
или используется память по умолчанию, и около 500 МБ для меня.
и вы снова и снова запускаете код,
Затем эта ошибка возникает.
Попробуйте очистить все RDD
в конце кода, поэтому каждый раз, когда выполняется код, создается RDD
, а также очищается из памяти.
Сделайте это, используя: RDD_Name.unpersist()