首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Apache Parquet 优势与日志应用场景解析

Apache Parquet 优势与日志应用场景解析

作者头像
东风微鸣
发布2025-12-25 13:30:39
发布2025-12-25 13:30:39
1820
举报

字数 1190,阅读大约需 6 分钟

写作背景

近期看了几篇关于日志解决方案的文章, 发现它们都在使用 Apache Parquet 作为存储文件格式. 如下:

  • • Yelp 发布大规模管理 S3 服务器访问日志的方案_架构_InfoQ精选文章[1]
  • • Cloudflare Log Explorer is now GA, providing native observability and forensics[2]
  • • 逆势降本:云上数据平台年复削减30%的治理实践_云计算_吴建阳_InfoQ精选文章[3]
  • 讲真,OpenObserve 挺好用的!
  • • AWS Debuts a Distributed SQL Database, Amazon S3 Tables for Iceberg - The New Stack[4]
  • • Grafana Tempo 2.5 release: vParquet4, streaming endpoints, and more metrics | Grafana Labs[5]
  • • 对象存储应用:云原生最新架构 - The New Stack --- Object Store Apps: Cloud Native's Freshest Architecture - The New Stack[6]

这勾起了我的好奇心:

  • • Apache Parquet 是什么?
  • • 有什么优势?
  • • 什么软件可以处理 Apache Parquet?
  • • 近期发现很多日志解决方案会将日志转换为 Apache Parquet, 为什么要这样处理, 有什么优势?

Apache Parquet 简介

Apache Parquet 是一种开源的列式存储文件格式,专门为大数据处理框架设计,最初由 Twitter 和 Cloudera 联合开发,现为 Apache 顶级项目。

核心优势

1. 列式存储结构

  • • 与传统行式存储不同,Parquet 按列存储数据
  • • 查询时只需读取相关列,大幅减少 I/O
  • • 示例对比:
代码语言:javascript
复制
行式存储:Row1[col1,col2,col3], Row2[col1,col2,col3], ...
列式存储:Column1[所有行的值], Column2[所有行的值], ...

2. 高效的压缩和编码

  • • 同列数据类型一致,压缩效率更高(可达行式存储的 1/10)
  • • 支持多种编码:RLE、字典编码、Delta 编码等
  • • 支持多种压缩:Snappy、Gzip、LZO、Zstd

3. Schema 演化支持

  • • 支持向后/向前兼容的 schema 变更
  • • 可以添加新列、删除列、修改列类型

4. 谓词下推(Predicate Pushdown)

  • • 查询引擎可以在读取数据前过滤不相关的数据块
  • • 利用列统计信息(min/max 值)跳过无关数据块

5. 嵌套数据结构支持

  • • 原生支持复杂嵌套数据类型(数组、映射、结构体)
  • • 使用 Dremel 记录 shredding 算法高效存储嵌套数据

能处理 Parquet 的软件/框架

大数据处理框架

  • Apache Spark(主要使用场景)
  • Apache Hive
  • Apache Impala
  • Presto/Trino
  • Apache Flink
  • Apache Arrow(内存格式转换)

查询引擎

  • AWS Athena
  • Google BigQuery
  • Azure Synapse
  • DuckDB
  • Polars

编程语言支持

  • • Python(PyArrow、pandas)
  • • Java
  • • R
  • • Go
  • • .NET

日志解决方案

  • • Cloudflare Log Explorer
  • • OpenObserve
  • • Grafana Tempo
  • • Yelp
  • • AWS 官方参考架构: Extracting key insights from Amazon S3 access logs with AWS Glue for Ray | AWS Big Data Blog[7]

日志解决方案转用 Parquet 的原因

1. 成本效益

代码语言:javascript
复制
# 示例:日志存储成本对比
原始 JSON 日志:1TB → 存储成本 $$$$
Parquet 压缩后:~100GB → 存储成本 $
  • • 存储成本降低 70-90%
  • • 网络传输成本显著降低

2. 查询性能提升

代码语言:javascript
复制
-- 典型日志查询场景
SELECT COUNT(*), error_code 
FROM logs 
WHERE date >= '2024-01-01' 
  AND status = 'ERROR' 
GROUP BY error_code;

-- Parquet 优势:
-- 1. 只读取 date, status, error_code 三列
-- 2. 利用列统计快速跳过无关日期分区
-- 3. 压缩数据减少磁盘 I/O

3. 适合时序数据分析

  • • 日志数据天然具有时间属性
  • • Parquet 支持按时间分区,优化时间范围查询
  • • 结合分区剪枝(Partition Pruning)大幅提升性能

4. 兼容现代数据栈

代码语言:javascript
复制
# 典型日志处理管道
原始日志 → Fluentd/Logstash → Kafka → 
Spark Streaming → Parquet (S3/ADLS) → 
Trino/Athena 查询 → BI 工具

5. 长期存储和分析

  • • Parquet 是分析型工作负载的理想格式
  • • 支持数据湖架构(Delta Lake、Iceberg、Hudi)
  • • 便于历史日志的趋势分析和机器学习

具体应用场景示例

案例:ELT 日志分析管道

代码语言:javascript
复制
原始日志 (JSON/文本)
       ↓
实时处理层 (Kafka)
       ↓
批处理层 (Spark) → 转换为 Parquet
       ↓
云存储 (S3/GCS) → 分区: dt=2024-01-01/
       ↓
查询层 (Athena/Presto)
       ↓
可视化 (Grafana/Tableau)

性能对比数据

  • 存储空间:较 JSON 减少 75-90%
  • 查询速度:提升 10-100 倍(取决于查询模式)
  • 扫描数据量:减少 60-95%(列裁剪效果)

注意事项

  1. 1. 不适合场景
    • • 高频单行读写(OLTP)
    • • 需要流式逐行处理的场景
    • • 小文件过多会影响性能
  2. 2. 最佳实践
    • • 合理设置文件大小(128MB-1GB)
    • • 按时间分区组织数据
    • • 选择适当的压缩算法(平衡速度/比率)

Parquet 已成为现代数据湖和日志分析的事实标准格式,特别适合需要长期存储、批量分析和成本优化的日志管理场景。

引用链接

[1] Yelp 发布大规模管理 S3 服务器访问日志的方案_架构_InfoQ精选文章: https://www.infoq.cn/article/yYvYwDZJOIEVI2h1rKvq [2] Cloudflare Log Explorer is now GA, providing native observability and forensics: https://blog.cloudflare.com/logexplorer-ga/ [3] 逆势降本:云上数据平台年复削减30%的治理实践_云计算_吴建阳_InfoQ精选文章: https://www.infoq.cn/article/lgHiav5blTU6Sa8yaF7l [4] AWS Debuts a Distributed SQL Database, Amazon S3 Tables for Iceberg - The New Stack: https://thenewstack.io/aws-debuts-a-distributed-sql-database-s3-tables-for-iceberg/ [5] Grafana Tempo 2.5 release: vParquet4, streaming endpoints, and more metrics | Grafana Labs: https://grafana.com/blog/grafana-tempo-2-5-release-vparquet4-streaming-endpoints-and-more-metrics/ [6] 对象存储应用:云原生最新架构 - The New Stack --- Object Store Apps: Cloud Native's Freshest Architecture - The New Stack: https://thenewstack.io/object-store-apps-cloud-natives-freshest-architecture/ [7] Extracting key insights from Amazon S3 access logs with AWS Glue for Ray | AWS Big Data Blog: https://aws.amazon.com/cn/blogs/big-data/extracting-key-insights-from-amazon-s3-access-logs-with-aws-glue-for-ray/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-12-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 东风微鸣技术博客 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 写作背景
  • Apache Parquet 简介
  • 核心优势
    • 1. 列式存储结构
    • 2. 高效的压缩和编码
    • 3. Schema 演化支持
    • 4. 谓词下推(Predicate Pushdown)
    • 5. 嵌套数据结构支持
  • 能处理 Parquet 的软件/框架
    • 大数据处理框架
    • 查询引擎
    • 编程语言支持
    • 日志解决方案
  • 日志解决方案转用 Parquet 的原因
    • 1. 成本效益
    • 2. 查询性能提升
    • 3. 适合时序数据分析
    • 4. 兼容现代数据栈
    • 5. 长期存储和分析
  • 具体应用场景示例
    • 案例:ELT 日志分析管道
    • 性能对比数据
  • 注意事项
    • 引用链接
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档