# parquet API reference

> The `parquet` package, from parquet 0.11.7, as published on mojoshelf (commit c15f51aee06c), by `mojo doc` from Mojo 1.2.0.

## Modules

- [parquet.alp](https://magmalake.dev/s/parquet/api/alp.md): ALP — Adaptive Lossless floating-Point, Parquet encoding 10.
- [parquet.arrow](https://magmalake.dev/s/parquet/api/arrow.md): Compatibility re-export. The Arrow layer lives in `arrow-mlake.mojo` now.
- [parquet.assemble](https://magmalake.dev/s/parquet/api/assemble.md): Dremel record assembly: definition and repetition levels back into Arrow.
- [parquet.bitio](https://magmalake.dev/s/parquet/api/bitio.md): Bit-level readers: little-endian bit packing and the RLE/bit-packed hybrid.
- [parquet.bloom](https://magmalake.dev/s/parquet/api/bloom.md): Split-block bloom filters — `might_contain` for equality predicates.
- [parquet.carrow](https://magmalake.dev/s/parquet/api/carrow.md): Compatibility re-export. The C Data Interface export lives in `arrow-mlake.mojo` now — see `parquet.arrow` for why.
- [parquet.carrow_import](https://magmalake.dev/s/parquet/api/carrow_import.md): Compatibility re-export. The C Data Interface import lives in `arrow-mlake.mojo` now — see `parquet.arrow` for why.
- [parquet.codec](https://magmalake.dev/s/parquet/api/codec.md): Page compression codecs.
- [parquet.convert](https://magmalake.dev/s/parquet/api/convert.md): Physical Parquet values to Arrow buffers.
- [parquet.display](https://magmalake.dev/s/parquet/api/display.md): Human- and JSON-readable rendering of decoded Arrow arrays, for the CLI.
- [parquet.encoding](https://magmalake.dev/s/parquet/api/encoding.md): Value encodings: PLAIN, dictionaries, the DELTA family, BYTE_STREAM_SPLIT.
- [parquet.page](https://magmalake.dev/s/parquet/api/page.md): Page decoding: headers, compression, levels, and the values inside.
- [parquet.reader](https://magmalake.dev/s/parquet/api/reader.md): `ParquetReader` — open a file, pick columns and row groups, read batches.
- [parquet.rle_encode](https://magmalake.dev/s/parquet/api/rle_encode.md): Encoders for the two bit-level formats a Parquet writer needs.
- [parquet.schema](https://magmalake.dev/s/parquet/api/schema.md): The Parquet schema tree, its leaf columns, and the Arrow schema it means.
- [parquet.stats](https://magmalake.dev/s/parquet/api/stats.md): Column statistics, decoded from their raw bytes to typed values.
- [parquet.writer](https://magmalake.dev/s/parquet/api/writer.md): `ParquetWriter` — write Arrow arrays back out as a Parquet file.

`parquet.mojo` — Apache Parquet in pure Mojo.

Part of magmalake: data lake building blocks in Mojo.

```mojo
from parquet import ParquetReader

var r = ParquetReader.open("part-0.parquet")
var t = r.read_table()
for i in range(t.num_columns()):
    print(t.name(i), String(t.type(i)))
```

The Arrow side — `ArrayData`, `ArrayArena`, `RecordBatch` and the C Data
Interface — is `arrow-mlake.mojo`, and is re-exported here so that
`from parquet.arrow import ArrayData` and `from parquet import RecordBatch`
keep resolving. Metadata comes from `thrift.mojo`, page CRC32s from
`hashes.mojo`, Snappy from `snappy.mojo` and the DEFLATE half of GZIP from
`deflate.mojo` — all pure Mojo and all consumed by source path. `ZSTD` and
`LZ4` need `parquet_full`, which pulls in the two FFI tins.
