Skip to main content

Parquet Connector

File

The Parquet connector reads Apache Parquet files from a directory the Brinqa agent can reach and emits one record per row, mapping the file's columns onto a data model you choose. It completes the set of schema-agnostic file connectors alongside the CSV and JSON connectors.

Parquet is the default export format for Spark, Databricks, Athena, Snowflake unloads and pandas, so it is usually what security and asset inventory data already looks like in a customer data lake.

The connector derives its schema, and every column's data type, from the Parquet file itself. A Parquet file carries a typed schema in its footer, so unlike the CSV connector there is nothing to declare by hand: no delimiters, no text qualifier, no character encoding, and no lists of which columns are numbers, dates or booleans. Timestamps arrive as timestamps and decimals as decimals.

CapabilitySupported
CompressionSnappy, GZIP, ZSTD, LZ4 (raw and legacy), uncompressed
Nested dataStructs, lists, maps — see Nested columns
Column selectionYes, at top-level column granularity
Multiple filesYes, including files whose schemas differ
Incremental syncYes, by file modification time

Data retrieved from parquet

Connector ObjectRequiredMaps to Data Model
Record (configurable target)YesRecord (configurable target)

Model relationships

note

For detailed steps on how to view the data retrieved from parquet in the Brinqa Platform, see How to view your data.

info

The agent needs write access to the data directory, not just read. Files are renamed as they are processed, and that is what stops the same data being ingested twice.

info

INT96 timestamps carry no time zone. Spark writes them in UTC, but Impala and older versions of Hive write local wall-clock time, and nothing in the file distinguishes the two. If your timestamps are off by a fixed number of hours, set Legacy timestamp time zone to the zone the file was written in.

note

A list of structs becomes JSON rather than being flattened because flattening cannot record which values belonged to the same element. Splitting orders into orders.sku = [A, B] and orders.qty = [1, 2] loses the pairing, and there is no way to recover it. Keeping each element as one JSON object keeps sku and qty together. Flatten lists of structs overrides this if each field is meaningful on its own.