提到千万级数据分析,大多数人第一反应是Spark集群或者云数仓。我过去也一样——直到试了DuckDB。
结果出乎意料:4GB内存的笔记本,47秒跑完,零配置、零账单、零集群。
![]()
DuckDB是个嵌入式分析型数据库,定位类似SQLite,但专为OLAP场景设计。它完全在内存运行,采用列式存储和向量化执行。安装只需一行命令:pip install duckdb pandas,没有Docker、没有JVM、没有YAML文件。
我用Python生成了测试数据:1000万条金融交易记录,包含交易ID、用户ID、金额、地区、品类、欺诈标记和时间戳,数据量约0.78GB。
核心查询是个复杂聚合:按地区和品类分组,统计交易笔数、总金额、平均金额、欺诈笔数、欺诈率,以及金额的95分位数,且只取3月份之后的数据。DuckDB直接零拷贝挂载DataFrame,无需导入导出。
查询耗时47.3秒。作为对比,Pandas在这种规模的多维聚合+窗口函数场景下,内存和速度都会吃紧。
DuckDB快在三处设计:
列式存储——只读查询涉及的列,而非整行。上面这个查询只用了5个字段,IO大幅缩减。
向量化执行——批量处理数据,CPU缓存友好,SIMD指令加速。
零拷贝集成——与Pandas、Arrow、Polars共享内存,不重复序列化。
什么场景适合用它?探索性数据分析、本地原型验证、小到中型数据集(GB级)、不想为云资源付费的时候。数据量再往上走,或者需要多节点并行,还是得回到分布式方案。
但千万级这个甜点区,很多人其实高估了硬件门槛,低估了单机工具的进化。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.