SuperAPI AI 工具集

lakehouse-performance

数据与分析

查看项目

更新于 10-15 11:08

技能介绍

用途

lakehouse-performance 面向数据湖仓场景,帮助智能体主动发现性能瓶颈并给出优化建议。随着湖仓长期运行,缺乏例行维护会导致性能显著下降,该技能用于在 Spark、Trino 和 Databricks 环境中提前识别并处理这些问题。

主要能力

1. 小文件检测与合并

当平均文件大小小于 50 MB 时,触发“小文件警告”。还可进一步建议在表属性中设置目标文件大小,让写入端自动优化,例如 Delta Lake(Databricks)中:

ALTER TABLE table_name SET TBLPROPERTIES ('delta.targetFileSize' = '134217728');

2. 高级布局与聚簇

不盲目推荐简单的 ZORDER,而是评估表大小和写入模式:

  • Databricks Liquid Clustering:对于频繁更新或查询模式多变的表,优先推荐 Liquid Clustering 而非 Z-Ordering。
ALTER TABLE table_name CLUSTER BY (col1, col2);
  • Iceberg 隐藏分区:如果用户手工提取日期字符串(如 date_format(ts, 'yyyy-MM-dd')),建议改用 Iceberg 原生分区转换(如 partition by days(ts))。

3. 数据跳过与 Bloom Filter

当针对高基数字符串(如 user_id 或 uuid)的过滤查询较慢时,建议启用 Bloom Filter 索引。例如 Databricks Delta:

CREATE BLOOMFILTER INDEX ON TABLE my_table FOR COLUMNS(user_id OPTIONS (fpp=0.1, numItems=50000000));

4. 查询优化与 CBO(基于代价的优化器)

当用户提供慢 Spark SQL 查询时:

  • 检查 SortMergeJoin 与 BroadcastHashJoin,对小维度表建议使用 /*+ BROADCAST(table) */。
  • 建议执行 ANALYZE TABLE my_table COMPUTE STATISTICS,让引擎能够利用 CBO。

使用方式

该技能可作为智能体技能调用,针对具体表或慢查询进行分析并输出性能报告。报告格式示例:

🚀 Enterprise Performance Report: [Table Name]

健康评分: [例如 65/100]

⚠️ 检测到的问题

  1. 小文件问题: 平均文件大小为 12 MB(目标:128 MB)。
  2. 缺失统计信息: 由于表统计信息缺失,CBO 无法优化 join。

🛠️ 推荐操作

  • [ ] Liquid Clustering: 从 Z-Ordering 迁移到 Liquid Clustering,以获得更好的写入并发性。ALTER TABLE [table] CLUSTER BY (...)
  • [ ] 计算统计信息: 执行 ANALYZE TABLE [table] COMPUTE STATISTICS。

适用场景

  • 数据湖仓日常维护与健康检查。
  • Spark、Trino、Databricks 查询性能调优。
  • 小文件、分区布局、数据跳过和统计信息缺失等常见问题的诊断。

限制

该技能聚焦于性能检测与建议,具体阈值、参数和可用语法可能因引擎与版本不同而有所差异,需结合实际环境验证。关于收费、价格等信息暂未提供。