Parquet / ORC / Avro / TextFile / JSON / SequenceFile 全方位对比
| 特性 | 📦 Parquet | 📦 ORC | 📦 Avro | 📄 TextFile (CSV) | 📄 JSON | 📦 SequenceFile |
|---|---|---|---|---|---|---|
| 数据模型 | 列式 | 列式 | 行式 | 行式 | 行式 | 行式(KV) |
| 压缩比 | 极高(3-10x) | 极高(3-10x) | 中等(2-5x) | 低(1-2x) | 低(1-2x) | 中等(2-4x) |
| 读性能 | 极快(列裁剪) | 极快(列裁剪) | 中等(全行读取) | 慢(全量解析) | 慢(全量解析) | 中等 |
| 写性能 | 中等 | 中等 | 快 | 快 | 快 | 快 |
| Schema演化 | 支持(向后兼容) | 有限支持 | 优秀(完整演化) | 不支持 | 无Schema | 不支持 |
| 嵌套类型 | 支持(Map/List/Struct) | 支持(Map/Array/Struct) | 支持(Record/Array/Map) | 不支持 | 原生支持 | 可序列化 |
| Predicate Pushdown | 支持 | 支持 | 不支持 | 不支持 | 不支持 | 不支持 |
| 列裁剪 | 支持 | 支持 | 不支持 | 不支持 | 不支持 | 不支持 |
| Splitable | 是 | 是 | 是 | 需BZip2/LZO | 需BZip2 | 是 |
| Hive兼容 | ✅ | ✅(Hive原生) | ✅(需SerDe) | ✅ | ✅(需SerDe) | 需InputFormat |
| Spark兼容 | ✅(默认格式) | ✅ | ✅ | ✅ | ✅ | 需特殊API |
| Kafka兼容 | 需转换 | 需转换 | ✅(原生) | 需解析 | ✅ | 不适合 |
| 人类可读 | ❌(二进制) | ❌(二进制) | ❌(二进制) | ✅ | ✅ | ❌(二进制) |
| 压缩算法 | Snappy/GZIP/ZSTD/LZ4 | ZLIB/Snappy/LZO/ZSTD | Snappy/Deflate/BZip2 | GZIP/BZip2/LZO/Snappy | GZIP/BZip2 | 取决于Codec |
| 最佳场景 | 分析查询、数仓 | Hive数仓、ORC向量化 | 消息传递、Schema演化 | 数据导入、调试 | 半结构化、API | MR中间数据 |