twilight ventures

opening a parquet, avro or arrow file without a notebook

Most readers of a columnar file want a kernel running before they will show you a row. This brief is about opening the file where it already sits, in the IDE, in the editor or on the ticket, and reading it as a table, with the footer read first the way a map is read before the tunnel.

Three products open these files, though only two of them take every format on this page, and each one reads the metadata first. Parquet Lens for JetBrains IDEs and Parquet Lens for VS Code open Parquet, Avro, TFRecord, Arrow IPC and Feather v2 files from disk, and Lens File Viewer opens a Parquet attachment on a Confluence page or a Jira issue without downloading it. The two editor products read a file in the pieces its own format has (row groups, record batches, blocks or records), Lens File Viewer reads a Parquet attachment by its row groups, and none of the three writes to it.

in a jetbrains ide

Install Parquet Lens from the JetBrains Marketplace, then open the file the way you open any file in the project tree. It appears in an editor tab beside your code, with the first page of rows already on screen. The Schema tab lists the logical and physical type of every column, its codec and encodings, and the null count, minimum and maximum the Parquet footer carries per column, read from the metadata alone, so you know what the file holds before any row is decoded. Rows arrive in pages of up to 5000 and Go to row lands on any row. Find in file streams a text search across every row without holding up the grid. That much is free, with a row copied out as JSON or the page as CSV.

Pro on the JetBrains plugin is a subscription with a 30-day trial of its own. It adds a filter query such as lang == "en" && score >= 0.5, evaluated across every row group with min/max pruning where the writer stored those statistics, and a sort of the whole dataset by any column. Exact distinct counts and distributions over every row, an export of all rows, the search matches or the filter matches to CSV, JSONL or a new Parquet file, and a profile report on every column are Pro as well. The product page quotes the price.

Parquet Lens in IntelliJ IDEA: a paged data table with Schema and Page stats tabs and a row detail pane
sensors.parquet in a JetBrains IDE: 2,400 pages of 100 rows, the Schema and Page stats tabs beside the data, the selected row in the detail pane.

in vs code

Install Parquet Lens for VS Code from Open VSX or the Visual Studio Marketplace and open the file from the explorer. The schema, the row count and the row groups appear before any data decodes; in our engine timing, the footer read on a 101 MB Parquet file of 5,000,000 rows took 8.1 ms. Ctrl+G, a row number and Enter jumps to that row, a search streams the whole file, and matches only pages through the hit rows. There is no account, and the free tier makes no network calls. Pro here is one key bought once that includes 12 months of updates and covers JSONL Lens for VS Code as well; a 14-day trial runs on each machine first. The key adds the filter query, export to CSV or JSONL, exact stats from a full scan and grid themes.

on a confluence page or a jira issue

On a Confluence page or a Jira issue, Lens File Viewer opens a Parquet attachment in the macro or the issue panel, as the person viewing it, and the file stays on Atlassian. The app fetches it in byte ranges: a 3.2 million row file opens on its schema and pulls row groups in as you page. The app reads Parquet with snappy, gzip, zstd or lz4 columns; Avro, TFRecord, Arrow and Feather belong to the two editor products and do not open as attachments.

avro, tfrecord, arrow and feather

An Avro container opens on its blocks, decoded only when paged into view, with nested records, arrays and maps shown as readable cells and logical types decoded to their values. The VS Code edition reads the row count from the block headers, so the last row of a big file is one jump away. A TFRecord dataset is paged by its framing, tf.Example and SequenceExample alike, with every feature key a column and image bytes shown with their type and size; the VS Code edition verifies both checksums of every record at open. Arrow IPC file and stream formats and Feather v2 open with lz4 and zstd compression and dictionary-encoded columns. The JetBrains plugin also converts any of them to one snappy-compressed Parquet file through its Pro export.

the types you will see

The VS Code edition shows a timestamp with its unit and timezone and keeps decimals and int64 at full precision; in both editions a nested list, struct or map renders as JSON with a detail pane that pretty-prints the selected row. A raw binary column a writer never marked as text shows as hex with its byte count in the JetBrains plugin, where Bytes as reads it under a charset you pick. A corrupt or truncated file reports its reason, and a codec the reader does not have is refused with its name in the message.