Навыки spark-optimization
📦

spark-optimization

Безопасно

Оптимизация производительности Apache Spark

Также доступно от: wshobson

Медленные задачи Spark впустую тратят ресурсы и задерживают получение аналитики. Этот навык предоставляет проверенные паттерны для секционирования, кэширования, оптимизации перемешивания и настройки памяти для ускорения ваших пайплайнов данных.

Поддерживает: Claude Codex Code(CC)
📊 71 Адекватно
1

Скачать ZIP навыка

2

Загрузить в Claude

Перейдите в Settings → Capabilities → Skills → Upload skill

3

Включите и начните использовать

Протестировать

Использование «spark-optimization». Настроить Spark для набора данных 100 ГБ с частым кэшированием

Ожидаемый результат:

  • spark.executor.memory: 8g
  • spark.executor.memoryOverhead: 2g
  • spark.memory.fraction: 0.6
  • spark.sql.shuffle.partitions: 200
  • spark.sql.adaptive.enabled: true
  • Recommended: Use MEMORY_AND_DISK_SER for cache persistence

Использование «spark-optimization». Исправить медленное соединение со 100-кратным перекосом данных

Ожидаемый результат:

  • Detected: Partition skew ratio 15.3x (threshold: 2x)
  • Solution: Apply salt join technique with 10 buckets
  • Alternative: Enable AQE skew join handling
  • Expected improvement: 5-8x faster completion

Аудит безопасности

Безопасно
v1 • 2/25/2026

All static analyzer findings were false positives. The skill contains Python/PySpark code examples for Apache Spark optimization. External command detections misidentified Python code as Ruby/shell execution. Network findings were documentation URLs. No actual security risks detected.

1
Просканировано файлов
430
Проанализировано строк
0
находки
1
Всего аудитов
Проблем безопасности не найдено
Проверено: claude

Оценка качества

38
Архитектура
100
Сопровождаемость
87
Контент
22
Сообщество
100
Безопасность
100
Соответствие спецификации

Что вы можете построить

Инженер данных оптимизирует ETL-пайплайн

Сокращение времени ночных пакетных заданий с 4 часов до 45 минут путём реализации обрезки секций, broadcast-соединений и настройки памяти.

Аналитическая команда масштабирует отчёты

Обработка 10-кратного роста данных без дополнительной инфраструктуры за счёт применения AQE, правильных стратегий кэширования и Z-ordering.

Разработчик отлаживает медленные запросы

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

Попробуйте эти промпты

Базовая конфигурация Spark
Помогите настроить сессию Spark для production ETL-задачи, обрабатывающей 500 ГБ данных ежедневно. Какие настройки использовать для секционирования и памяти?
Проблема производительностью соединения
Моё соединение между таблицей 5 ТБ и таблицей поиска 5 МБ работает крайне медленно. Как можно оптимизировать это?
Отладка перекоса данных
Некоторые задачи в моей операции groupBy выполняются в 10 раз дольше других. Помогите обнаружить и исправить перекос данных в моей задаче Spark.
Полная оптимизация пайплайна
Проверьте мой пайплайн Spark: чтение 1 ТБ Parquet, соединение 3 таблиц, агрегация по дате и региону, запись секционированных данных. Предоставьте полную стратегию оптимизации, включая AQE, память и настройки перемешивания.

Лучшие практики

  • Включайте Adaptive Query Execution (AQE) для автоматического объединения секций и обработки перекоса
  • Используйте broadcast-соединения для таблиц до 50 МБ для устранения накладных расходов перемешивания
  • Выбирайте правильный размер секций 128-256 МБ для опти��ального параллелизма без накладных расходов планирования

Избегать

  • Использование collect() на больших DataFrame, вызывающее ошибки OOM драйвера
  • Чрезмерное кэширование DataFrame, которые используются только один раз, с wasteho памяти
  • Игнорирование перекоса данных, что вызывает отстающие задачи и тайм-ауты заданий

Часто задаваемые вопросы

Какой оптимальный размер секции для Spark?
128-256 МБ на секцию обеспечивает лучший баланс между параллелизмом и накладными расходами планирования задач. Слишком мало секций вызывает недоиспользование; слишком много увеличивает накладные расходы планирования.
Когда использовать cache() вместо persist()?
Используйте cache() для простого хранения в памяти. Используйте persist() с определённым StorageLevel, когда нужно выгрузку на диск (MEMORY_AND_DISK) или сериализацию (MEMORY_ONLY_SER) для эффективности памяти.
Как узнать, есть ли в задаче перекос данных?
Проверьте Spark UI для задач с существенно большей длительностью, чем в среднем. Коэффициент перекоса (макс./сред. время задачи) выше 2x указывает на проблематичный перекос, требующий сэлирования или AQE.
Что такое Adaptive Query Execution (AQE)?
AQE автоматически оптимизирует запросы во время выполнения путём объединения секций, обработки перекоса соединений и оптимизации агрегаций. Включите через spark.sql.adaptive.enabled=true (Spark 3.0+).
Использовать Parquet или Delta Lake?
Delta Lake расширяет Parquet с ACID-транзакциями, принудительным применением схемы и путешествием во времени. Используйте Delta для production-нагрузок, требующих надёжности; Parquet для простых нагрузок с интенсивным чтением.
Как уменьшить давление памяти при перемешивании?
Включите сжатие перемешивания (spark.shuffle.compress=true), используйте AQE для уменьшения секций, предварительно агрегируйте перед широкими преобразованиями и увеличьте spark.memory.fraction при переполнениях.

Сведения для разработчиков

Автор

sickn33

Лицензия

MIT

Ссылка

main

Структура файлов

📄 SKILL.md