用途
该技能用于为智能体装备数据湖仓(Lakehouse)性能优化能力,帮助检测并解决数据湖仓中的性能瓶颈。湖仓若缺乏日常维护,性能会显著下降,因此该技能要求智能体主动提出跨 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]`
**Health Score:** [e.g., 65/100]
#### ⚠️ Issues Detected
1. **Small File Problem:** Average file size is 12 MB (Target: 128 MB).
2. **Missing Statistics:** CBO cannot optimize joins because table stats are missing.
#### 🛠️ Recommended Actions
- [ ] **Liquid Clustering:** Migrate from Z-Ordering to Liquid Clustering for better write concurrency. `ALTER TABLE [table] CLUSTER BY (...)`
- [ ] **Compute Stats:** Execute `ANALYZE TABLE [table] COMPUTE STATISTICS`.
适用场景
- 数据湖仓日常维护与性能巡检。
- 排查小文件过多、分区设计不合理导致的查询缓慢。
- 针对 Spark、Trino、Databricks 环境的表布局与查询调优。
- 为慢速 Spark SQL 查询提供优化方向。
限制
资料未提供该技能的具体安装方式、依赖环境、支持的版本范围、收费模式或价格信息,这些内容暂未提供。