TGViewer
Big Data Science Big Data Science @bdscience · 3.57K subscribers
Post #190 1.08K
🛹5 шагов от Python к PySpark и 10 лучших практик настройки Spark-заданий
Узнайте, как быстро конвертировать Python-скрипты в задания PySpark, эффективно используя всю мощь распределенных вычислений Apache Spark.
1. Преобразуйте локальный датафрейм Pandas в Spark Dataframe через Apache Arrow (независимый от языка столбчатый формат в памяти) или Koalas (API Pandas в Apache Spark)
2. Напишите пользовательскую функцию PySpark (UDF) для функции Python. UDF PySpark принимают столбцы и применяет логику построчно для создания нового столбца
3. Загрузите датасет в Spark RDD или DataFrame
4. Избегайте циклов, используя преобразование map() для каждого элемента RDD с использованием функции, возвращающей новый RDD.
5. Учитывайте взаимозависимость датафреймов – если новое значение столбца DataFrame зависит от других таких же структур данных, объедините их через JOIN и вызовите UDF, чтобы получить новое значение столбца.

Чтобы по максимуму использовать все возможности кластера, перед запуском Spark-заданий помните о следующих рекомендациях:
1. Избегайте слишком больших структур данных (RDD, DataFrames) и помните про форматы (Avro и Parquet лучше, чем TXT, CSV или JSON)
2. Для уменьшения накладных расходов на параллельную обработку данных используйте coalesce(), чтобы сократить количество разделов
3. Сокращайте неиспользуемые ресурсы (ядра в кластере), распределяя данные с помощью repartition()
4. Используйте reduceByKey вместо groupByKey, настраивая уровень параллелизма и задавая количество разделов при вызове операций перетасовки данных (shuffle)
5. Избегайте перетасовки больших объемов данных, настроив spark.sql.shuffle.partitions для указания количества разделов при перетасовке для объединений или агрегатов.
6. Отфильтруйте данные перед обработкой, убрав лишнее
7. Используйте Broadcast-переменные, подобные распределенному кэшу в Hadoop, чтобы повысить производительность, сделав данные доступными для всех исполнителей и уменьшив их перетасовку
8. Если RDD или DataFrame используется более одного раза, кэшируйте их, чтобы избежать повторного вычисления и повысить производительность
9. Следите за пользовательским интерфейсом Spark для настройки своего приложения
10. Используйте динамическое размещение (spark.dynamicAllocation.enabled), чтобы масштабировать количество исполнителей в приложении в зависимости от рабочей нагрузки
More from @bdscience
  1. Nov 27, 2025💎 Imagen AI — an intelligent Adobe Lightroom assistant that automates photo editing by le…
  2. Oct 28, 2025🌐 OpenAI has released ChatGPT Atlas Atlas is a browser with an integrated AI sidebar, bui…
  3. Sep 16, 2025🤖 Nanobanana.ai is an AI aggregation platform that provides unified subscription-based ac…
  4. Jul 30, 2025🏀 Photoleap by Lightricks is a premier AI-powered image editing app that seamlessly blend…
  5. Jun 19, 2025⚙️ Rumi Labs transforms passive media into interactive entertainment A San Francisco-based…
  6. May 27, 2025📈Genspark AI: the autonomous super-agent for multi-step business workflows 🧠 Mixture-of-…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →