Pyspark Dataframes в Pandas и ML Ops – Задержка при параллельном выполнении?

Вопрос или проблема

Если я преобразую Spark DataFrame в Pandas DataFrame, а затем применю операции Pandas и модели sklearn к набору данных в Databricks, будут ли операции из Pandas и sklearn распределены по кластеру? Или мне нужно использовать операции DataFrame PySpark и пакеты PySpark ML для распределения операций?

Краткий ответ: НЕТ.

В момент, когда вы преобразуете Spark DataFrame в Pandas DataFrame, все последующие операции (Pandas, ML и т.д.) будут выполняться на одном ядре, поскольку эти алгоритмы и программы написаны на оригинальном Python и не поддерживают многопоточные распределения. Короче говоря, кому-то придется переписать весь sklearn, чтобы снова сделать его совместимым с Spark.

Тем не менее, есть некоторые достижения в направлении распределения scikit-learn на кластере Spark. Некоторые функции, такие как затратный GridSearch, были переписаны в Spark, и вы можете использовать их вместе с оригинальным sklearn в Databricks, см. эту публикацию, или Joblib Apache Spark Backend (ранее известную как spark-sklearn). Эта публикация в блоге также стоит прочитать.

Ответ или решение

Краткий ответ на ваш вопрос: НЕТ.

Когда вы преобразуете DataFrame Spark в DataFrame Pandas, все последующие операции с использованием Pandas и библиотек машинного обучения, таких как scikit-learn, будут выполняться на одном ядре. Это связано с тем, что алгоритмы и программы, написанные на Python, по своей природе не поддерживают распределенные вычисления на нескольких ядрах. Фактически, для того чтобы использовать возможности распределенной обработки в рамках Apache Spark, необходимо будет переписать большую часть функциональности scikit-learn.

Тем не менее, существуют некоторые достижения в области распределения функций scikit-learn на кластере Spark. Например, была разработана функциональность, позволяющая выполнять распределенные версии таких затратных операций, как GridSearch, что можно использовать вместе с оригинальной библиотекой scikit-learn в Databricks. Вы можете ознакомиться с этой темой в следующих источниках:

  1. Авто-масштабирование scikit-learn с Apache Spark
  2. Joblib Apache Spark Backend, которая ранее была известна как spark-sklearn.
  3. Прогнозирование в масштабе с использованием scikit-learn и pandas UDFs в PySpark.

Если вы хотите воспользоваться преимуществами распределенных вычислений в вашем рабочем процессе, рекомендуется использовать операции с DataFrame Spark и пакеты машинного обучения, разработанные для работы со Spark, такие как MLlib. Это обеспечит высокую производительность и масштабируемость ваших вычислительных задач.

Оцените материал
Добавить комментарий

Капча загружается...