Przejdź do treści
Biblioteka skilli
Dane i analityka · Budowanie i kod

spark

/spark

Pomaga w obliczeniach Spark: zapytaniach Spark SQL, Structured Streaming, RDD i przetwarzaniu dużych danych.

Repozytorium
hello-skill ↗
Licencja
MIT
Ostatnia zmiana repozytorium
02.07.2026

Ocena i bezpieczeństwo

86/ 100Klasa: dobry
Format25 / 25
Frontmatter z nazwą i opisem, poprawna nazwa, opis do 1024 znaków, nazwa zgodna z folderem.
Odkrywalność21 / 25
Opis mówi, kiedy użyć skilla, ma sensowną długość i jest w 3. osobie.
Treść25 / 35
Co najmniej 150 słów i do 500 linii, nagłówki, listy kroków, przykłady albo kod.
Higiena15 / 15
Bez zaślepek typu TODO, bez ścieżek Windows, z licencją.
Ryzykobrak sygnałów w skanie
Pliki w paczce
1
Skrypty
0
Komentarze HTML
0
Adresy URL w SKILL.md
0
Przestarzałość

Brak sygnałów. Repozytorium zmienione 02.07.2026, bez odwołań do wycofanych modeli i API.

Licencja

MIT, otwarta: można używać i zmieniać, z zachowaniem informacji o autorze.

Co robi i kiedy

Pomaga w obliczeniach Spark: zapytaniach Spark SQL, Structured Streaming, RDD i przetwarzaniu dużych danych.

Oryginalny opis (EN)

Spark开发专家助手。当用户需要进行Spark大数据计算、Spark SQL、Structured Streaming、RDD开发或大规模数据处理时调用。

Jak działa

  1. 技术栈强制约束
  2. 命名规范
  3. 数据模型规范
  4. Spark SQL 规范
  5. Structured Streaming 规范
  6. RDD 规范
  7. 性能优化
  8. 注释规范
  9. 代码质量强制要求
  10. 运维规范
Sekcje z nagłówków SKILL.md, w oryginale · 116 linii, 355 słów
Podgląd SKILL.md
---
name: "spark"
description: "Spark开发专家助手。当用户需要进行Spark大数据计算、Spark SQL、Structured Streaming、RDD开发或大规模数据处理时调用。"
---

# Spark 开发技能

你是一位资深 Spark 开发工程师。在协助 Spark 项目时,请遵循以下规范。

## 技术栈强制约束

- 使用 Spark 3.5+ 版本
- Scala 2.13 / Python 3.10+(PySpark)
- 优先使用 DataFrame / Dataset API,避免直接使用 RDD
- 使用 Catalyst 优化器自动优化执行计划
- 生产环境使用 YARN / K8s 作为资源管理器

## 命名规范

- 数据库名:snake_case(`user_analytics`、`order_stats`)
- 表名:snake_case(`user_events`、`order_details`)
- 列名:snake_case(`user_id`、`event_time`)
- 模块/包:snake_case(`etl_pipeline.py`、`data_cleaner.py`)
- 函数/方法:snake_case(`process_user_data`、`aggregate_metrics`)
- 常量:UPPER_SNAKE_CASE(`MAX_PARTITION_SIZE`、`DEFAULT_SHUFFLE_PARTITIONS`)
- 命名语义化,禁止拼音、无意义缩写

## 数据模型规范

- 必须定义 Schema,禁止 `inferSchema=True`(性能损耗大)
- 使用 `StructType` + `StructField` 明确定义字段类型
- 日期字段使用 `DateType`,时间戳使用 `TimestampType`
- 金额字段使用 `DecimalType`,禁止使用 `DoubleType`
- 字段必须设置 `nullable` 属性,明确是否允许空值

## Spark SQL 规范

- 避免 shuffle:
  - `group by` 前先 `filter` 减少数据量
  - 使用 `repartition` 预分配分区
  - 避免跨分区 `join`,优先使用 `broadcast join`
- 分区优化:
  - 合理设置 `spark.sql.shuffle.partitions`(默认 200,通常需调大)
  - 大表按常用过滤列分区(`partitionBy("date")`)
  - 小文件合并:使用 `repartition()` / `coalesce()` 控制输出文件数
- 查询优化:
  - 避免 `SELECT *`,明确指定所需列
  - 使用 `cache()` / `persist()` 缓存频繁使用的 DataFrame
  - 过滤条件下推:先 `filter` 再 `join`
  - 使用 `explain()` 分析执行计划

## Structured Streaming 规范

- 输入源:Kafka / Delta Lake / 文件流
- 输出模式:`append`(仅新增)/ `update`(更新)/ `complete`(全量)
- 水位线:必须设置 `withWatermark` 处理迟到数据
- 状态管理:使用 `mapGroupsWithState` / `flatMapGroupsWithState`
- 检查点:必须设置 `checkpointLocation`,支持故障恢复
- 触发器:使用 `Trigger.ProcessingTime("10 seconds")` 控制处理频率

## RDD 规范

- 尽量使用 DataFrame 替代 RDD(性能更优、优化更好)
- 必须使用 RDD 时:
  - 避免在 `map` 中创建昂贵对象
  - 使用 `mapPartitions` 替代 `map`,减少对象创建开销
  - 使用 `broadcast` 广播小数据集
  - 避免嵌套 RDD 操作

## 性能优化

- 分区策略:
  - 数据倾斜:使用 `salting`(加盐)打散热点 key
  - 小文件问题:使用 `repartition()` / `coalesce()` 合并
  - 分区数:核心数 × 2 ~ 3 倍
- 缓存策略:
  - `cache()`:内存缓存,适合多次使用的 DataFrame
  - `persist(StorageLevel.MEMORY_AND_DISK)`:内存不足时溢写到磁盘
  - 不再使用时必须 `unpersist()` 释放资源
- 序列化:
  - 使用 Kryo 序列化:`spark.serializer = org.apache.spark.serializer.KryoSerializer`
  - 注册自定义类提升序列化效率
- 广播变量:小表(< 100MB)使用 `broadcast` 避免shuffle

## 注释规范

- 所有模块必须有中文 docstring,说明用途和职责
- 所有 public 函数必须有中文 docstring,包含功能说明、参数、返回值
- 复杂 SQL 必须添加中文注释说明业务逻辑
- 性能优化点必须注释优化原因和效果
- TODO 注释格式:`# TODO: [作者] 具体待办事项描述`
- 禁止无意义注释,注释必须与代码保持同步

## 代码质量强制要求

- 禁止魔法值:分区数、阈值等必须定义为命名常量
- 必须处理数据倾斜:热点 key 加盐或广播
- 必须设置检查点:流式作业必须配置 `checkpointLocation`
- 禁止 `SELECT *`,明确指定所需列
- 禁止在 Driver 端收集大量数据:`collect()` 前必须 `limit()`
- 必须设置 `maxRecordsPerBatch` 控制批处理大小
- 数据写入必须幂等,支持重跑

## 运维规范

- 监控:Spark UI / Prometheus + Grafana
- 日志:使用 `log4j`,禁止 `print()` 输出
- 资源配置:根据数据量合理设置 executor 内存和核心数
- 数据治理:表和字段必须有中文注释
- 作业调度:使用 Airflow / DolphinScheduler 编排

## 最佳实践

- 优先使用 DataFrame API 替代 RDD
- 使用 Delta Lake / Iceberg 管理数据湖
- 大表 Join 使用 broadcast 或 bucket 优化
- 使用 Adaptive Query Execution(AQE)自动优化
- 流式作业使用 Exactly-Once 语义保障
- 定期清理过期检查点和中间数据

Wersje

RepozytoriumWynikLicencja
Ta strona · dkbnull/hello-skill86MIT
nimadorostkar/Claude-Skills-collection100MIT
G1Joshi/Agent-Skills100MIT
chrishuffman5/domain-expert100MIT
devnomad-byte/techneering100MIT
wishworldbetter/seedex-skills100MIT
a-lottes/aspark90MIT
NirDiamant/Agentic_Engineering90Apache-2.0

Migawka bazy z 28.10.2026 · wersja paczki 5ad75838bbb4 (skrót SHA-256 całej paczki)

Pobrania w ostatnich 30 dniach: 0 · ranking

Zgłoś problem z tym skillem: szkodliwa treść, błędny opis albo prośba autora o usunięcie.

Podobne skille

  • 100spark-engineer
    Pomaga pisać zadania Spark, diagnozować wydajność i konfigurować klastry: transformacje DataFrame, Spark SQL, RDD, shuffle, pamięć executorów, pliki parquet i structured streaming.
  • 100spark-sql-optimizer
    Prawdopodobnie optymalizuje zapytania Spark SQL w potokach danych, pomagając poprawić wydajność operacji w ramach kategorii Data Pipelines.
  • 100apache-spark
    Dostarcza wiedzę z książki „Learning Spark, 2nd Edition” o Apache Spark i PySpark: architektura, DataFrame API, Spark SQL, Structured Streaming i strojenie.
  • 100mobius
    Pomaga uruchamiać zadania Apache Spark z C# lub F#: rozproszone przetwarzanie dużych danych z DataFrames i RDD, zapytania Spark SQL z .NET, potoki ETL i integrację z ekosystemem Hadoop.
  • 100spark-job-creator
    Prawdopodobnie tworzy zadania Spark do potoków danych, pomagając budować joby przetwarzania w ramach kategorii Data Pipelines.
  • 100spark-optimization
    Stosuje optymalizację Spark w powtarzalnych lokalnych przepływach danych, z API zależnymi od wersji, jawnymi założeniami i walidacją.

Uwagi i zgłoszenia

Wiadomość trafi do Bartosza Sokolińskiego. Adres e-mail jest potrzebny tylko do odpowiedzi. Szczegóły w polityce prywatności.