Sample Parquet files for testing data pipelines, free and CC0

parquet/people-1000.parquet, parquet/people-1000-zstd.parquet and parquet/people-1000-gzip.parquet hold the same 1,000 rows in 14 columns and differ only in compression: snappy at 114,469 bytes, zstd at 86,695 and gzip at 83,002. A reader built without zstd reads the footer of parquet/people-1000-zstd.parquet and then fails on its data, so test every codec your users may send.

parquet/people-1000-10-row-groups.parquet holds the same rows in 10 row groups where parquet/people-1000.parquet has 1, at 174,780 bytes: a reader that only ever reads the first row group returns a tenth of the rows and raises nothing.

parquet/nested-types.parquet reshapes the same 1,000 people into nested columns, typed int32, struct<first: string, last: string>, struct<street: string, city: string, country: string>, map<string, string ('contacts')> and list<element: string>, where parquet/people-1000.parquet nests only tags. A loader that flattens everything to scalar columns has nowhere to put the structs or the map in parquet/nested-types.parquet.

parquet/people-100k.parquet keeps the flat layout with 100,000 rows in 9,756,012 bytes, for reads that should stream rather than load the whole file. Its rows are the ones in csv/people-100k.csv, so a pipeline can be checked for identical results whichever it reads.

6 files. The same list as JSON: https://loremfile.dev/parquet/index.json

Parquet files
FileSizePropertiesDescription
nested-types.parquet 47.4 KB (47,369 bytes) 1,000 rows The same 1,000 people reshaped into nested columns: name and address as structs, contacts as a map of email and phone, and tags as a list. For readers and loaders that flatten everything to scalar columns.
Snippets
<a href="https://loremfile.dev/parquet/nested-types.parquet">download</a>
curl -O https://loremfile.dev/parquet/nested-types.parquet
people-1000-10-row-groups.parquet 174.8 KB (174,780 bytes) 1,000 rows The same 1,000 people rows in ten row groups of 100. A reader that only reads the first row group returns 100 rows and no error.
Snippets
<a href="https://loremfile.dev/parquet/people-1000-10-row-groups.parquet">download</a>
curl -O https://loremfile.dev/parquet/people-1000-10-row-groups.parquet
people-1000-gzip.parquet 83 KB (83,002 bytes) 1,000 rows The same 1,000 people rows as people-1000.parquet, compressed with gzip instead of snappy.
Snippets
<a href="https://loremfile.dev/parquet/people-1000-gzip.parquet">download</a>
curl -O https://loremfile.dev/parquet/people-1000-gzip.parquet
people-1000-zstd.parquet 86.7 KB (86,695 bytes) 1,000 rows The same 1,000 people rows as people-1000.parquet, compressed with zstd instead of snappy. A reader built without zstd support reads the footer and fails on the data.
Snippets
<a href="https://loremfile.dev/parquet/people-1000-zstd.parquet">download</a>
curl -O https://loremfile.dev/parquet/people-1000-zstd.parquet
people-1000.parquet 114.5 KB (114,469 bytes) 1,000 rows 1,000 rows of the shared people dataset as Parquet, snappy-compressed, in a single row group. The same rows as every other people fixture.
Snippets
<a href="https://loremfile.dev/parquet/people-1000.parquet">download</a>
curl -O https://loremfile.dev/parquet/people-1000.parquet
people-100k.parquet 9.8 MB (9,756,012 bytes) 100,000 rows 100,000 rows of the shared people dataset as Parquet, snappy-compressed, in a single row group. The same rows as every other people fixture.
Snippets
<a href="https://loremfile.dev/parquet/people-100k.parquet">download</a>
curl -O https://loremfile.dev/parquet/people-100k.parquet

Every Parquet file in one command, each checked against its hash: npx loremfile get --format parquet, or loremfile get --format parquet after pip install loremfile.

File names follow the naming grammar. Verify a download against sha256sums.txt.