Dane i analityka · Budowanie i kod
spark
/spark
Pomaga w obliczeniach Spark: zapytaniach Spark SQL, Structured Streaming, RDD i przetwarzaniu dużych danych.
- Autor
- dkbnull ↗
- 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
- 技术栈强制约束
- 命名规范
- 数据模型规范
- Spark SQL 规范
- Structured Streaming 规范
- RDD 规范
- 性能优化
- 注释规范
- 代码质量强制要求
- 运维规范
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
| Repozytorium | Wynik | Licencja |
|---|---|---|
| Ta strona · dkbnull/hello-skill | 86 | MIT |
| nimadorostkar/Claude-Skills-collection | 100 | MIT |
| G1Joshi/Agent-Skills | 100 | MIT |
| chrishuffman5/domain-expert | 100 | MIT |
| devnomad-byte/techneering | 100 | MIT |
| wishworldbetter/seedex-skills | 100 | MIT |
| a-lottes/aspark | 90 | MIT |
| NirDiamant/Agentic_Engineering | 90 | Apache-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ą.