spark-optimization
Оптимизация производительности Apache Spark
Также доступно от: wshobson
Медленные задачи Spark впустую тратят ресурсы и задерживают получение аналитики. Этот навык предоставляет проверенные паттерны для секционирования, кэширования, оптимизации перемешивания и настройки памяти для ускорения ваших пайплайнов данных.
Скачать ZIP навыка
Загрузить в Claude
Перейдите в Settings → Capabilities → Skills → Upload skill
Включите и начните использовать
Протестировать
Использование «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
Аудит безопасности
Безопасно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.
Оценка качества
Что вы можете построить
Инженер данных оптимизирует ETL-пайплайн
Сокращение времени ночных пакетных заданий с 4 часов до 45 минут путём реализации обрезки секций, broadcast-соединений и настройки памяти.
Аналитическая команда масштабирует отчёты
Обработка 10-кратного роста данных без дополнительной инфраструктуры за счёт применения AQE, правильных стратегий кэширования и Z-ordering.
Разработчик отлаживает медленные запросы
Выявление и устранение проблем перекоса данных, вызывающих отстающие задачи, с помощью анализа секций и утилит обнаружения перекоса.
Попробуйте эти промпты
Помогите настроить сессию 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?
Когда использовать cache() вместо persist()?
Как узнать, есть ли в задаче перекос данных?
Что такое Adaptive Query Execution (AQE)?
Использовать Parquet или Delta Lake?
Как уменьшить давление памяти при перемешивании?
Сведения для разработчиков
Автор
sickn33Лицензия
MIT
Репозиторий
https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/spark-optimizationСсылка
main
Структура файлов
📄 SKILL.md