Nano Hash - криптовалюты, майнинг, программирование

Обязательно ли использовать df.unpersist() после использования df.cache()?

Обязательно ли использовать df.unpersist() после использования df.cache() для освобождения кэш-памяти? Если я сохраняю свой DataFrame в кеше без сохранения, тогда код работает очень быстро. Однако, когда я использую df.unpersist(), это занимает довольно много времени.


  • Когда RDD очищается от мусора, для него автоматически вызывается unpersist. 23.05.2018
  • @Rumoku: А когда RDD собирает мусор? 23.05.2018
  • Это JVM, поэтому RDD стал пригодным для сборки мусора, как только на этот объект больше нет ссылок, не так ли? 23.05.2018

Ответы:


1

Это не обязательно, но если у вас впереди долгий путь и вы хотите высвободить ресурсы, которые вам больше не нужны, настоятельно рекомендуется это сделать. В любом случае Spark будет управлять ими для вас на основе LRU; цитата из документов:

Spark автоматически отслеживает использование кеша на каждом узле и удаляет старые разделы данных в режиме наименее недавно использованного (LRU).

Метод unpersist делает это по умолчанию, но учтите, что вы можете явно unpersist асинхронно вызвать его с параметром a blocking = false.

df.unpersist(false) // unpersists the Dataframe without blocking

Метод unpersist задокументирован здесь для Spark 2.3.0.

23.05.2018
  • В чем разница между df.unpersist() и df.unpersist(false) ? 25.01.2021
  • Это означает, что перед возвратом не нужно ждать, пока все блоки не сохранятся. 26.01.2021
  • Что вы имеете в виду под блокировкой? 12.02.2021
  • Блокировка — это термин, обычно применяемый к любой форме вызова, которая возвращает управление вызывающему объекту после того, как он выполнил действие, которое предполагалось. Напротив, вызов не блокируется, если он каким-то образом начинает выполнять действие и возвращает управление вызывающей стороне, в то время как действие продолжает выполняться в фоновом режиме. Эти последние методы обычно основаны либо на принятии обратного вызова, который будет запущен при выполнении действия, либо на возврате некоторой формы дескриптора, представляющего обещание, что действие будет выполнено (иногда называемое будущим). 12.02.2021
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..