200 万条日志实测:CSV 换成 Parquet,快了之后还要算笔账

简介: 在阿里云 ECS 上,我用 200 万条模拟日志对比了 CSV 与 Parquet:指定小时统计的查询耗时从 704.35 毫秒降至 4.90 毫秒,文件体积减少约 89%。不过,转换需要时间,四线程也未必更快。这篇文章结合实测结果,分享如何把查询次数、转换成本和线程开销一起算清楚,选择适合自己的日志分析方案。

一份日志要反复统计,直接读 CSV 就够了,还是值得先换成 Parquet?这次我在阿里云 ECS 上生成了 200 万条模拟访问日志,做了一个小实验。

最显眼的结果是:同样做一次指定小时的统计,查询耗时从 704.35 ms 降到了 4.90 ms。但把整个过程算进去,我发现事情没有“换个格式就完事”这么简单。

先看这次实验的三个发现:

  • 查询更快、文件更小:Parquet 文件体积减少约 89%,三类查询都有明显提速。
  • 只查一次,转换未必划算:转换本身需要约 1.35 秒,也得算进总耗时。
  • 四线程并非次次占优:一个很短的查询,单线程反而略快。

01|场景很简单:查一个小时,找一组错误,做一次汇总

我选的是日志分析中容易理解的三个问题:某个小时有多少请求、哪些接口的错误最多、整份日志的请求和返回字节数是多少。这样既有带条件的查询,也有全量汇总,比较起来更有意思。

实验复用了账号里的一台 ECS,通过云助手完成环境检查、依赖安装和实验执行,再把结果取回本地整理。

项目 本次实际配置
云服务器 阿里云 ECS 通用算力型 u1,杭州地域
计算资源 4 vCPU、8 GiB 内存;系统识别为 Intel Xeon Platinum
软件环境 Ubuntu 22.04、Python 3.10.12、DuckDB 1.4.4
实验数据 200 万条模拟日志,按时间排序,包含 6 个字段

日志字段分别是请求编号、时间、接口、状态码、耗时和返回字节数。这些数据由脚本生成,不包含真实用户访问记录,生成规则也保留在复现材料里。

02|先把比较方法固定,再看谁更快

我设置了三组:CSV 单线程、Parquet 单线程、Parquet 四线程。前两组比较文件格式,后两组观察线程数的影响。

为了让数字能放在一起比较,实验按下面的方式执行:

  1. 固定输入和查询逻辑。 使用同一份数据、相同查询,CSV 提前指定字段类型。
  2. 预热后重复测量。 每个组合先预热一次,再正式测量 7 次,测试顺序交错排列,最终取中位数。
  3. 同时核对结果。 每次查询都校验结果,避免只看速度、忽略统计内容是否一致。

最终得到 63 次正式测量,查询结果全部通过一致性校验。下面的时间只统计查询执行与取回结果,程序启动耗时另行记录。

03|换个格式,查询时间差多少?

先看结果,单位均为毫秒,数值越小越好。

查询任务 CSV 单线程 Parquet 单线程 Parquet 四线程
指定小时:按状态码统计请求数与返回字节数 704.35 4.90 5.60
错误接口 Top 10:统计错误数与耗时 546.14 25.26 13.12
全量汇总:请求、错误、返回字节数与耗时 542.59 37.67 18.34

查询耗时对比.png

图 1|同一台 ECS、同一份数据,每组 7 次测量取中位数。

变化最大的是指定小时统计。我选取了傍晚六点到七点的数据,按状态码汇总请求数和返回字节数,Parquet 单线程只用了约 4.9 毫秒。另外两个查询也明显缩短了耗时。

这份数据本身按时间排列,时间过滤可能让 Parquet 更容易跳过无关数据。不过,本次没有单独拆分压缩、列读取和数据跳过各自的贡献,能确认的是这套格式与查询组合的整体收益。

04|四个线程,为什么没有全部跑赢?

把 CSV 那根较长的柱子拿掉,再单独比较 Parquet,区别会更清楚。

线程数对比.png

图 2|四线程缩短了两类查询的耗时,但指定小时统计从 4.90 ms 增至 5.60 ms。

错误接口统计从 25.26 ms 降到 13.12 ms,全量汇总从 37.67 ms 降到 18.34 ms,都接近缩短一半。小时统计却反过来,四线程略慢。

这个结果让我觉得,线程数不能直接照着 CPU 核数填满。对于已经很短的查询,并行调度等额外开销可能抵消收益;具体原因还需要更细的测试。至少这次的结果提醒我:调整线程以后,还是要用自己的查询再跑一遍。

05|查询只要几毫秒,转换的 1.35 秒算谁的?

只看查询图,很容易觉得应该马上把 CSV 全换掉。但前面还有一次格式转换。

要算的这笔账 本次实测结果
原始 CSV 文件 105.38 MiB
Parquet 文件(ZSTD 压缩) 11.55 MiB
文件体积减少 约 89%
CSV 转换为 Parquet 约 1.35 秒

如果我只想查一次小时统计,直接读 CSV 约需 0.70 秒;先转换再查,则需要约 1.36 秒。这时,即使 Parquet 的查询本身更快,总时间还是更长。

如果同一份数据要反复使用,情况就不同了。按本次中位数估算,重复做 2 次小时统计,就开始抵消转换耗时;另外两类查询大约需要 3 次。这里仅比较转换与查询时间,没有把开发和环境安装时间算进去。

做完这个小实验,我觉得最大的收获是学会把几笔时间放在一起看:转换花多久、查询省多久、程序启动又要多久。 阿里云 ECS 提供了固定的运行环境,云助手方便执行和留存结果;而下一次遇到类似任务,我会先看数据会被用几次,再决定格式和线程数。这样选出来的方案才更贴近实际需要。

相关文章
|
机器学习/深度学习 弹性计算 自然语言处理
【阿里云弹性计算】深度学习训练平台搭建:阿里云 ECS 与 GPU 实例的高效利用
【5月更文挑战第28天】阿里云ECS结合GPU实例为深度学习提供高效解决方案。通过弹性计算服务满足大量计算需求,GPU加速训练。用户可按需选择实例规格,配置深度学习框架,实现快速搭建训练平台。示例代码展示了在GPU实例上使用TensorFlow进行训练。优化包括合理分配GPU资源和使用混合精度技术,应用涵盖图像识别和自然语言处理。注意成本控制及数据安全,借助阿里云推动深度学习发展。
881 2
|
19小时前
|
存储 人工智能 安全
2026 年阿里云双十一大促企业 Agent 开发:DeepSeek Harness 框架,Cordis 内核与部署教程
对比市面上其他Agent产品,很多产品把模型、工具、循环逻辑打包成封闭应用,用户只能在产品给定的能力范围内使用。而DeepSeek Harness把控制权交给开发者,Agent的每一个环节都可以被替换改造,从工具定义、权限策略,到最核心的思考行动循环,全部开放插件化改造能力。这种架构设计,解决了AI智能体项目“定制难、改造贵、黑盒不可审计”的痛点,让开发者可以基于同一套底座,面向不同业务场景搭建完全不同形态的智能体,小到本地代码辅助工具,大到企业内部自动化业务智能体。
58 0
|
18小时前
|
数据采集 人工智能 搜索推荐
生成式引擎优化GEO工程实践|从爬虫可抓取、RAG检索到内容可解析与证据可引用,拆解生成式引擎筛选内容的三步与落地方法
搜索正从“关键词+链接”转向“对话式答案”,底层逻辑已变:用户问问题,AI直接给结论并标注信源。这催生新规则——GEO(生成式引擎优化),核心是让内容更易被AI“找到、看懂、敢引用”。它非SEO替代,而是从追求曝光转向赢得信任;不靠堆词,而靠结构清晰、结论明确、证据可验。本质是内容价值的重定价:从“被点击”到“被转述”。
|
18小时前
|
数据采集 监控 数据管理
中小企业做知识管理有哪些难点?
数字化转型走到深水区,不少中小企业已经完成业务系统搭建、数据归集、BI 看板上线,可知识管理落地却屡屡受阻。很多企业误以为把文档、报表收拢起来就是知识沉淀,最后却发现沉淀下来的内容不可信、不好用,业务人员不敢引用、管理层没法依托知识做判断。究其根源,知识管理的根基是高质量数据,如果底层数据质量失守,零散的文档、报表、分析模型都只是没有可靠支撑的信息,很难转化成可复用、可信赖的企业知识。
|
18小时前
|
Ubuntu 安全 Linux
VMware Workstation Pro 26H1u1 中文版(Windows & Linux)
VMwareWorkstationPro是一款专业的免费虚拟机及桌面虚拟化软件,用于开发、测试、演示和部署软件。采用全新64位架构,显著提升大内存场景下的虚拟化性能与稳定性,全面支持最新Win11及主流Linux作为客户机系统。VMwareWorkstationPro26H1新功能-新增对Windows版64位VMwareWorkstationPro的支持:Windows平台的WorkstationPro现已推出64位版本,其可执行文件、动态库、安装程序组件与后台服务均按64位进程运行。
84 0
VMware Workstation Pro 26H1u1 中文版(Windows & Linux)
|
云安全 安全 网络安全
|
4天前
|
JavaScript 安全 前端开发
Nodejs Brotli decoder 代码执行漏洞 (CVE-2026-111497)10629
Node.js发布安全更新修复Brotli解码器高危RCE漏洞(CVE-2026-111497),建议受影响版本用户立即升级。
1875 1
|
11天前
|
人工智能 API 开发工具
DeepSeek Harness 神插件:白嫖 13 家大厂模型
`dsh-our-free-model` 是 DeepSeek Harness 神级插件:零配置、零API Key、零账号,聚合13家大厂免费模型(含DeepSeek V4.1 Flash、Kimi K3等),支持本地网关、用量看板与自动降级,真正实现“白嫖即用”。
1760 37
|
5天前
|
安全 应用服务中间件 Go
PHP2Shell 漏洞拆解:WordPress 与 nginx 为何中招
PHP2Shell 双 RCE 已遭在野利用:WordPress、Drupal 全在射程内,nginx 其实另有洞。拆成因与修复顺序
PHP2Shell 漏洞拆解:WordPress 与 nginx 为何中招