parquet-optimization
优化 Parquet 文件以提升性能
Parquet 文件如果没有适当的优化可能会变慢且臃肿。此技能主动分析 Parquet 操作并就压缩、编码、行组大小和统计信息提供改进建议,以最大化查询性能并最小化存储成本。
스킬 ZIP 다운로드
Claude에서 업로드
설정 → 기능 → 스킬 → 스킬 업로드로 이동
토글을 켜고 사용 시작
테스트해 보기
"parquet-optimization" 사용 중입니다. 我正在使用 AsyncArrowWriter 写入 Parquet 文件,但没有设置任何特殊属性。我遗漏了什么?
예상 결과:
我注意到您在使用 AsyncArrowWriter 时没有设置明确的 WriterProperties。对于生产工作负载,请考虑添加:
- 压缩:ZSTD(3) 提供 3-4 倍的压缩率,CPU 开销很低
- 行组大小:100MB 未压缩(100_000_000 行)可实现更好的谓词下推
- 统计信息:EnabledStatistics::Page 允许 DataFusion 跳过不相关的行组
这些设置通常可以将查询性能提升 2-5 倍,同时降低存储成本。
"parquet-optimization" 사용 중입니다. 我的 Parquet 查询即使只需要 3 列也会扫描整个文件。如何解决这个问题?
예상 결과:
您缺少列投影。使用 ProjectionMask 仅读取所需的列:
```rust
let projection = ProjectionMask::roots(&schema, vec![0, 2, 5]);
let builder = ParquetRecordBatchStreamBuilder::new(reader)
.await?
.with_projection(projection);
```
对于宽表,这可以通过消除不必要的列读取提供 10 倍以上的加速。
보안 감사
안전All static findings are false positives. The 37 'external_commands' detections are markdown code formatting backticks in SKILL.md (a documentation file). The 3 'weak cryptographic algorithm' detections are misclassifications of compression algorithms (ZSTD, Snappy) as cryptographic algorithms. This is a documentation-only skill with no executable code.
높은 위험 문제 (1)
중간 위험 문제 (1)
품질 점수
만들 수 있는 것
数据工程师优化生产管道
数据工程师正在构建一个每日向 S3 写入数百万记录的管道。该技能建议使用 ZSTD 压缩、100MB 行组并启用统计信息以实现最佳查询性能。
分析师提升查询速度
分析师发现 Parquet 查询速度慢。该技能识别缺失的列投影和批大小调优,以减少扫描成本并提升响应时间。
开发者调试性能问题
开发者在读取大型 Parquet 文件时遇到 OOM 错误。该技能推荐流式处理模式、行组过滤和内存感知的批大小设置。
이 프롬프트를 사용해 보세요
我正在使用 Rust arrow parquet crate 编写 Parquet 文件。生产环境应该使用什么设置?
我的 Parquet 文件应该使用 Snappy 还是 ZSTD?这些数据经常被访问用于分析查询。
尽管我有一个强大的集群,但我的 Parquet 查询仍然很慢。哪些 Parquet 级别的设置可以改善谓词下推?
我需要处理 50GB 的 Parquet 文件而不耗尽内存。应该使用什么模式?
모범 사례
- 将 ZSTD(3) 压缩作为生产数据湖的默认设置——它在压缩率和 CPU 开销之间取得平衡
- 目标行组大小为 100MB-1GB,以优化 S3 扫描和谓词下推效果
- 启用页面级统计信息以允许查询引擎在扫描过程中跳过不相关的行组
피하기
- 使用默认压缩设置——始终根据访问模式指定 ZSTD 或 Snappy
- 写入许多小型 Parquet 文件(<10MB)——这会产生过多的元数据开销并减慢查询
- 在读取大文件时将所有批次收集到内存中——应使用流式处理模式