pyspark У процесса python на узле исполнителя передаются широковещательные переменные в ram?

У меня есть узел с 24 ядрами и 124 ГБ оперативной памяти в моем искровом кластере. Когда я установил поле spark.executor.memory в 4g, а затем передал переменную, которая занимает 3.5gb для хранения в ram, будут ли ядра содержать 24 копии этой переменной? Или один экземпляр?

Я использую pyspark – v1.6.2

One Solution collect form web for “pyspark У процесса python на узле исполнителя передаются широковещательные переменные в ram?”

Я считаю, что PySpark не использует какую-либо общую память для обмена широковещательными переменными между рабочими.

В Unix-подобных системах широковещательные переменные загружаются в основную функцию рабочего, которая вызывается только после разворачивания от демона, поэтому из родительского пространства процесса недоступны.

Если вы хотите уменьшить размер больших переменных без использования внешнего сервиса, я бы рекомендовал использовать объекты с файловой поддержкой с картой памяти. Таким образом, вы можете эффективно использовать, например, массивы NumPy .

В отличие от нативных (JVM) приложений Spark действительно используют широковещательные переменные между несколькими потоками исполнителей на одном JVM-исполнителе.

  • Создайте новую obj с функцией deepcopy, но с новой переменной share obj со старым obj
  • Могут ли процессы python обмениваться живыми объектами?
  • Python - лучший язык программирования в мире.