该技能面向 Parquet 文件的性能与效率优化,在检测到 Parquet 相关代码或讨论时主动分析并给出改进建议。触发场景包括使用 AsyncArrowWriter 或 ParquetRecordBatchStreamBuilder 的代码、Parquet 性能问题讨论、未配置优化参数的读写、查询慢或文件过大,以及压缩、编码、行组大小相关问题。
写入侧检查项:缺少 .set_compression() 时建议显式设置压缩,如 Compression::ZSTD(ZstdLevel::try_new(3)?);行组过小时建议 .set_max_row_group_size(100_000_000);缺少统计配置时建议 .set_statistics_enabled(EnabledStatistics::Page);对低基数列建议使用字典编码,如 .set_column_encoding(ColumnPath::from("category"), Encoding::RLE_DICTIONARY) 与 .set_column_compression(...)。
读取侧检查项:建议用 .with_projection(ProjectionMask::roots(...)) 只读所需列;用 .with_batch_size(8192) 控制内存;利用统计信息做行组过滤并配合 with_row_groups;大数据集建议流式处理而非 collect。
资料还给出压缩选择指南(热数据 Snappy、温数据 ZSTD(3)、冷数据 ZSTD(6-9))、文件大小目标(单文件 100MB–1GB、行组 100MB–1GB、批 8192–65536 行),以及常见问题(小文件、无分区、压缩不当、缺少重试)。具体收益数字来自资料原文,实际效果因场景而异;技能不保证特定性能结果。