第 204 题:日志存储的列式格式,Parquet vs ORC的推荐场景?
题目
日志存储的列式格式,Parquet vs ORC的推荐场景?
完整讲解
一、列式存储与日志场景
列式格式:按列组织数据(同一列连续存储),适合分析型查询(按列扫描、聚合、压缩友好)。日志存储:行为日志、事件流等,通常写多、按时间或 key 扫描、需压缩与分区,列式可提高压缩比与扫描效率。
二、Parquet
- 特点:通用列式格式,支持嵌套结构(如 JSON)、丰富类型、** predicate pushdown(谓词下推过滤)、多种编码与压缩(如 Snappy、Zstd)。生态好(Spark、Flink、Hive 等原生支持),兼容性强**。
- 适用:通用分析、多引擎读写、复杂 schema、与 Hadoop/对象存储结合;日志分析、数仓分层(ODS/DWD/DWS)常用。
三、ORC
- 特点:Hive 生态的列式格式,针对 Hive 优化:索引(row group 级 min/max、bloom filter)、谓词下推、高压缩;读写路径与 Hive 深度集成,Hive 上往往比 Parquet 更快。
- 适用:以 Hive 为核心的离线数仓、大批量扫描与聚合;非 Hive 生态(如 Spark 仅读、Flink 不写 ORC)时 Parquet 更通用。
四、推荐场景小结
- 多引擎、通用日志/数仓、对象存储 → Parquet;Hive 为主、强分析、追求压缩与扫描性能 → ORC。实时写入+批分析混合时,常见「实时写 Kafka/表 → 批同步为 Parquet/ORC」;选型时考虑引擎支持与团队技术栈。
面试要点
- 能说清列式存储对日志/分析的价值(压缩、扫描、谓词下推);能对比 Parquet 与 ORC 的格式与生态。
- 能说明 Parquet 通用、多引擎、嵌套与兼容;ORC 偏 Hive、索引与压缩强;能给出推荐场景。
- 能简述谓词下推、压缩、与对象存储的配合。
记忆要点
- Parquet=通用列式、多引擎、嵌套、对象存储;ORC=Hive 优化、索引与压缩强。
- 推荐:多引擎/通用→Parquet;Hive 为主→ORC;考虑引擎支持与栈。