Anatomy of an Apache Parquet file

The anatomy of an Apache Parquet file, as of the time of writing, is shown below.

┌────────────────────────────────────────────────────────────────┐
│ "PAR1" ASCII string (4 bytes)                                  │
├────────────────────────────────────────────────────────────────┤
│  ┌──────────────────────────────────────────────────────────┐  │
│  │ Row Group 1                                              │  │
│  │  ┌─────────────────────────────────────────────────────┐ │  │
│  │  │ Column Chunk 1                                      | |  |
|  |  | ┌─────────────────────────────────────────────────┐ | |  |
|  |  | | Page 1                                          | | |  |
|  |  | |                                                 | | |  |
|  |  | | - Page header metadata (Thrift)                 | | |  |
|  |  | | - Repetition levels                             | | |  |
|  |  | | - Definition levels                             | | |  |
|  |  | | - Values                                        | | |  |
|  |  | └─────────────────────────────────────────────────┘ | |  |
|  |  |  ... (additional pages)                             | |  |
│  │  └─────────────────────────────────────────────────────┘ │  │
│  │  ... (additional column chunks)                          │  │
│  └──────────────────────────────────────────────────────────┘  │
│  ... (additional row groups)                                   │
├────────────────────────────────────────────────────────────────┤
│ FileMetaData (Thrift)                                          │
├────────────────────────────────────────────────────────────────┤
│ FileMetadata size (4 bytes, little endian)                     |
├────────────────────────────────────────────────────────────────┤
│ "PAR1" ASCII string (4 bytes)                                  │
└────────────────────────────────────────────────────────────────┘

Details about:

· apache, parquet