亚马逊AWS官方博客

【Agentic AI for Data系列】Kiro实战:DuckDB vs Spark技术选型全流程

1. 引言:技术选型的新挑战

当面临DuckDB与Spark的技术选型时,你是否也曾困惑:新兴的DuckDB真的比成熟的Spark更适合我的数据分析场景吗?传统的技术选型往往依赖经验判断或简单的性能测试,面对复杂的业务场景和多维度的评估指标,这种方法既耗时又难以保证客观性。

Agentic AI正在改变这一切! 在AI原生数据治理与开发的新范式下,AI不再仅仅是辅助工具,而是成为贯穿技术选型全流程的智能决策引擎。它能够自动化地进行环境配置、性能测试、指标收集和结果分析,将原本需要数周的手动验证工作压缩到几天内完成。

本文将通过一个真实案例展示这种变革:面对电商用户行为数据的营销分析任务,我们将使用AI开发助手Kiro进行了一次科学的比较。在3天内,AI自主完成了完整的性能对比测试,客观地给出选型报告。

2. 技术背景介绍

2.1 DuckDBSpark的产品定位

在深入AI驱动的技术选型实战之前,让我们先了解DuckDB和Spark的核心差异。设想这样一个场景:当你需要快速分析业务数据时,Spark需要启动集群、等待任务调度,整个过程可能需要数分钟;而DuckDB则可以立即执行SQL查询,几秒内得到结果。这种差异正是两种技术不同定位的体现。

DuckDB的定位

主要适合单机能够处理的数据量场景,其目标用户是熟悉SQL的数据分析师、科学家和业务人员。典型应用包括日报生成、数据探索、文件处理和交互式查询,核心优势在于零配置、即开即用的SQL原生支持[1]。

Spark的定位

更适合需要分布式处理的大规模数据场景,主要服务于大数据工程师。其典型应用涵盖大规模ETL、机器学习和流处理,核心优势体现在分布式处理能力、丰富的生态系统和企业级特性。

2.2 DuckDB的优势与实际使用体验

从技术特点来看,DuckDB采用嵌入式架构,直接运行在Python进程内部,虽然受本地资源限制但避免了网络延迟。它提供完整的SQL支持,包括窗口函数、CTE、复杂JOIN等高级特性,同时支持多种数据格式,同一条SQL可以查询CSV、Parquet、Pandas DataFrame。DuckDB在性能方面,除了单机架构避免了网络和调度开销外,其核心在于其向量化执行引擎。该引擎以列式数据块(Vectors)为单位进行处理,而非传统的逐行处理,极大地减少了CPU指令的调用开销和缓存未命中(Cache Miss),在计算密集型任务(如聚合、过滤、去重)上展现出无与伦比的效率。特别值得一提的是,DuckDB与AWS S3 Tables的集成让用户可以直接查询云端存储的Apache Iceberg格式数据,无需数据移动或复杂配置,既节省存储空间又保证数据安全性[2]。

DuckDB实际使用体验

Python
import duckdb
# 直接查询S3数据,无需集群启动,几秒内完成
result = duckdb.sql("""
    SELECT region, SUM(revenue) as total_revenue
    FROM 's3://your-bucket/sales-data/*.csv'
    GROUP BY region
""").df()

2.3 技术选型的挑战

这些产品定位和技术特性信息为我们理解后续的测试提供了重要背景。但是,仅凭理论分析还不足以做出准确的技术选型决策,真正的答案需要通过科学的测试验证来获得。

正如《开发新范式:Agentic AI驱动的AI for Data革命》这篇博客中介绍的Agentic AI数据开发方法论,我们现在将其应用到具体的技术选型场景中,看看Agentic AI真实的生产力。

3. Agentic AI实战:Kiro驱动的智能技术选型

3.1 什么是Kiro

这次验证,我直接选择使用out-of-box的开发智能体Kiro,为大家展示Agentic AI驱动的数据开发全流程.

Kiro作为AI开发智能体,通过其核心功能展现了Agentic AI的革命性能力:自然语言交互的零门槛协作、Specs规范驱动开发,以及Agent Hooks支持的智能自动化[3]。这三个能力的有机结合,让Kiro不再是被动的工具,而是能主动思考、规划和执行的智能开发伙伴。

自然语言交互

让开发者无需学习复杂的命令或界面操作,直接用自然语言对话就能完成开发工作,就像和同事聊天一样自然;

Specs规范驱动开发

就像有个资深产品经理,能把你一句话的想法变成详细的产品需求文档、技术设计和开发任务清单;

Agent Hooks

则像个贴心助手,能自动处理那些重复枯燥的工作,比如代码保存时自动格式化、跑测试、检查错误。

3.2 Kiro的工作流程展示:从自然语言到方案落地

1. 和 AI 对话

Plaintext
输入:"帮我对比DuckDB和Spark处理电商用户行为数据的性能,特别是小文件场景"

Agentic AI能够从这一句话中提取关键信息,例如技术对比需求、业务场景、数据特点、指标关注点等等。

2. 智能需求解析

Kiro基于大模型的推理能力,专注于理解和分解自然语言需求,识别关键技术要素和业务意图。

Plaintext
智能解析结果:
├── 核心任务识别
│   ├── 主要目标:性能对比分析
│   ├── 对比对象:DuckDB vs Spark
│   └── 决策支持:技术选型建议
├── 业务场景理解
│   ├── 数据类型:电商用户行为数据
│   ├── 数据特点:小文件分布式存储
│   └── 处理需求:去重、聚合、漏斗分析
├── 技术差异识别
│   ├── DuckDB特点:单机架构,列式存储,向量化执行
│   ├── Spark特点:分布式架构,内存计算,任务调度
│   └── 关键差异:小文件场景下的启动开销差异
└── 性能关注点
    ├── 执行时间:端到端处理时间;核心计算任务处理时间
    ├── 资源利用:CPU、内存使用效率
    └── 成本效益:DPU消耗和处理能力

3. 自动化方案生成(Specs规范驱动开发功能)

基于需求解析结果,Kiro的自主决策架构自动生成完整的技术实现方案,这正是Kiro Specs功能的体现:

Plaintext
Kiro生成的完整Specs方案:

Requirements(需求规范):
- 用户故事:作为数据工程师,我需要科学对比两种引擎的性能表现
- 验收标准:获得可量化、可重复的性能对比数据
- 成功指标:基于真实数据得出客观的技术选型建议

Design(技术架构):
- 测试环境:AWS Glue cn-northwest-1区域,统一DPU配置
- 数据设计:38个Parquet小文件,共3780条电商行为记录
- 监控体系:双重指标收集(AWS原生 + 自定义业务指标)
- 公平性保证:相同环境、等价逻辑、统一数据源

Implementation(执行计划):
- [ ] 测试数据准备:生成标准化的电商用户行为数据集
- [ ] 脚本开发:创建DuckDB和Spark的等价处理脚本
- [ ] 环境配置:设置AWS Glue作业和IAM权限
- [ ] 监控部署:配置CloudWatch指标收集和实时监控
- [ ] 测试执行:自动化运行并收集性能数据
- [ ] 结果分析:生成对比报告和技术选型建议

4. 自动化代码生成

基于前面的需求理解和方案设计,Kiro自动生成了完整的性能测试代码。包括高效的SQL查询代码和完整性能指标收集,以及Spark版本的等价业务逻辑实现。为确保测试的公平性,DuckDB和Spark代码均使用相同的数据输入、等价的处理逻辑和统一的环境配置。

监控指标设计方面,采用双重监控策略,既收集AWS Glue原生指标(CPU、内存、执行时间等系统级性能),也发布自定义业务指标(去重耗时、聚合计算、处理记录数等应用级性能),确保多个维度的全面性能分析。

5. 实时协作与问题调试

Kiro依照第3步产出的执行计划,向用户确认,得到用户许可后逐步第4步产出的代码。中间执行有任何问题,用户均可通过自然语言对话的方式去调整。

Plaintext
Kiro:Spark作业正在运行...预计需要2-3分钟

用户:为什么Spark需要这么长时间?数据量不大啊

Kiro:让我实时查看执行情况...

实时分析:
- 集群启动时间:90秒(占总时间59%)
- 实际数据处理:62秒
- 对于小数据集,启动开销确实很大

用户:那DuckDB呢?

Kiro:DuckDB作业已经完成了!总共44秒:
- 无启动开销,直接开始处理
- 去重操作:0.69秒(比Spark快97%)
- 这就是单机架构的优势

用户:差异这么大?能确认测试的公平性吗?

Kiro:公平,让我展示对比数据:

公平性保证:
- 相同的AWS Glue环境(cn-northwest-1)
- 相同的DPU配置(2 DPU)
- 等价的处理逻辑(我生成的代码确保功能一致)
- 相同的测试数据(38个Parquet文件,3780条记录)

6. 执行计划完成

7. 成果开源:

Plaintext
用户:太棒了,选型报告很完善!这套测试方法能开源给其他开发者使用吗?

当然!让我执行完整的开源项目准备:

开源项目:agentic-ai-glue-performance-comparison
├── 核心测试代码
│   ├── DuckDB性能测试脚本(含AWS凭证智能配置)
│   ├── Spark等价测试脚本(确保公平对比)
│   └── 双重监控系统(22个维度性能指标)
├── 一键部署工具
│   ├── AWS Glue作业自动创建
│   ├── IAM权限智能配置
│   └── 测试数据自动生成
├── 可视化分析
│   ├── CloudWatch监控面板
│   ├── 性能对比报告生成器
│   └── 技术选型决策矩阵
└── 完整文档
    ├── 快速开始指南
    ├── 配置参数说明
    └── 故障排除手册

🔗 GitHub: https://github.com/aws-samples/agentic-ai-glue-performance-comparison

这个案例展示了Agentic AI的端到端执行能力。从最初的一句话需求”对比DuckDB和Spark处理电商用户行为数据的性能”,到最终交付测试报告给出选型建议,再到贡献完整的开源项目代码,整个过程体现了Agentic AI工具从理解需求到价值创造的完整闭环。

4. Agentic AI生成的测试报告与选型建议

经过完整的测试执行,Kiro基于收集到的22个维度性能数据,自动生成了详细的技术选型报告。这份报告不仅包含客观的性能对比数据,更重要的是提供了基于业务场景的智能选型建议。

4.1 性能测试结果对比

核心性能指标对比

性能维度 Spark表现 DuckDB表现 性能差异 关键洞察
总执行时间 67.77秒 6.48秒 DuckDB90.4% 革命性的性能优势
数据去重时间 26.39秒 0.69秒 DuckDB97.4% 单机架构避免网络开销
平均内存使用 1761MB 1392MB DuckDB节省21.0% 更高效的内存管理
平均CPU使用 47.3% 47.9% 相近 CPU利用率相当
数据吞吐量 55.8条/秒 583.3条/秒 DuckDB945% 处理效率巨大提升
成本效率 2 DPU × 67.77秒 2 DPU × 6.48秒 DuckDB节省90.4% 直接转化为成本节约

详细性能分析

Plaintext
🔍 Kiro的智能分析报告:

执行时间分解:
├── Spark (67.77秒总计)
│   ├── 数据处理: 28.51秒 (42.1%)
│   ├── 去重处理: 26.39秒 (38.9%)
│   ├── 数据缓存: 0.15秒 (0.2%)
│   └── 其他操作: 12.72秒 (18.8%)
│
└── DuckDB (6.48秒总计)
    ├── 初始化时间: 3.47秒 (53.5%)
    ├── 批处理时间: 2.67秒 (41.2%)
    ├── 去重处理: 0.69秒 (10.6%) ← 显著优势
    ├── 文件合并: 0.02秒 (0.4%)
    └── 其他检查: 0.03秒 (0.5%)

💡 关键发现:
- DuckDB总执行时间比Spark快90.4%,性能优势巨大
- DuckDB的去重操作比Spark快97.4%,体现了列式存储优势
- 数据吞吐量提升945%,从55.8条/秒提升到583.3条/秒
- 即使包含初始化开销,DuckDB仍然具有压倒性优势

4.2 Agentic AI的智能选型建议

基于测试数据和业务场景分析,Kiro提供了以下智能选型建议:

推荐使用DuckDB的场景

🎯 最佳适用场景:DuckDB在处理单机可处理的小数据量场景中表现卓越,特别适合小文件多且需要频繁去重的数据处理任务。对于需要交互式查询和快速迭代的业务场景,以及对低延迟、快速响应有要求的应用,DuckDB都能提供显著的性能优势。同时,在成本敏感的项目中,DuckDB能够有效控制计算成本。需要强调的是,现代服务器的‘单机’能力已非常强大,可以配备数百GB甚至TB级别的内存和高速NVMe SSD。在这种硬件环境下,DuckDB能够轻松处理数十亿行、数百GB甚至TB级别的中等规模数据集,其处理范围远超传统观念中的‘小数据’。

推荐使用Spark的场景

🎯 Spark仍然最优的场景:当面对大数据量且需要分布式处理的复杂场景时,Spark依然是最佳选择。特别是在构建复杂的数据管道和机器学习工作流时,Spark丰富的生态系统组件提供了无可替代的价值。对于有高可用性和企业级治理要求的关键业务系统,Spark的成熟度和稳定性仍然是首选。

混合架构策略

Plaintext
企业数据处理架构建议:
├── 交互层 → DuckDB
│   ├── 日报生成和临时查询
│   ├── 数据探索和原型开发
│   └── 小规模ETL和数据清洗
│
└── 批处理层 → Spark
    ├── 大规模数据处理
    ├── 复杂的机器学习管道
    └── 企业级数据治理

5. 总结:Agentic AI重新定义技术选型

通过这次DuckDB vs Spark的完整技术选型实战,我们深刻体验了Agentic AI如何从根本上改变技术决策的方式。这次实战完美验证了Agentic AI数据开发的三大核心能力:AI自主理解业务需求并制定完整策略,通过自然语言交互大大降低技术选型门槛,实现从需求理解到开源项目交付的端到端智能流程。更重要的是,AI基于25个维度的量化数据进行客观决策,发现DuckDB在小文件处理场景下比Spark快90.4%,将传统2-3周的选型周期缩短到3天,效率提升80%,标志着我们正式迈入AI原生数据开发的新时代。

6. 系列文章导航

1篇:【Agentic AI for Data系列】开发新范式:AI驱动的数据革命

2篇:【Agentic AI for Data系列】Kiro实战:DuckDB vs Spark技术选型全流程(本篇)

7. 参考资料

[1]当 PyIceberg 和 DuckDB 遇见 AWS S3 Tables:打造 Serverless 数据湖”开源梦幻组合”

[2]DuckDB集成S3 Tables

[3]Kiro功能完全指南

*前述特定亚马逊云科技生成式人工智能相关的服务目前在亚马逊云科技海外区域可用。亚马逊云科技中国区域相关云服务由西云数据和光环新网运营,具体信息以中国区域官网为准。

本篇作者

马婧祎

亚马逊云科技解决方案架构师,专注于帮助客户构建和优化云端架构解决方案。曾任职知名互联网大厂,拥有多年大数据平台研发和架构设计经验。目前重点致力于AI原生解决方案的架构设计与实施,深耕AI与Data共建,致力于将AI作为一种“原生”能力,深度融入企业数据基因。

邱鹏峻

亚马逊云科技解决方案架构师,专注于为企业提供基于亚马逊云服务的架构设计、技术咨询及最佳实践指导,具有多年一线研发经验。