Skip to main content

Parquet Import

Import existing Parquet files directly into Arc. Useful for data lake integration, analytics pipeline output, or migrating from other columnar stores.

:::info Available since v26.02.1 Parquet bulk import is available starting Arc v26.02.1 (February 2026). :::

:::note Changed in v26.06.2 Parquet import now reads the file in-process (via Apache Arrow) instead of through DuckDB. The request and response are unchanged. Two things to be aware of: DECIMAL columns are imported as DOUBLE, and empty files / duplicate column names / a time_column rename that collides with an existing time column are rejected with 400. :::

Endpoint

POST /api/v1/import/parquet

Headers

HeaderRequiredDefaultDescription
AuthorizationYes-Bearer $ARC_TOKEN
X-Arc-DatabaseYes-Target database name (or use db query param)

Query Parameters

ParameterRequiredDefaultDescription
measurementYes-Target measurement name
time_columnNotimeName of the timestamp column in the Parquet file

Example

curl -X POST "http://localhost:8000/api/v1/import/parquet?measurement=metrics" \
-H "Authorization: Bearer $ARC_TOKEN" \
-H "X-Arc-Database: production" \
-F "file=@data_export.parquet"

Response

{
"status": "ok",
"result": {
"database": "production",
"measurement": "metrics",
"rows_imported": 1200000,
"partitions_created": 8,
"time_range_min": "2026-01-01T00:00:00Z",
"time_range_max": "2026-01-01T07:45:00Z",
"columns": ["time", "host", "region", "cpu_usage", "mem_usage"],
"duration_ms": 890
}
}

Notes

  • The Parquet file must contain a timestamp column (default name: time). Use the time_column parameter if your column has a different name. The time column may be an Arrow TIMESTAMP (any unit), an integer epoch column (any width), a floating-point epoch column (use time_format, or auto-detect by magnitude), or a timestamp string column.
  • Arc reads the Parquet file in-process via Apache Arrow and repartitions the data into Arc's hourly partition layout regardless of the source file's structure. Supported column types: integer (all widths, signed and unsigned), floating point, boolean, string, binary/byte-array, decimal (imported as DOUBLE), and timestamp.
  • DECIMAL columns are imported as DOUBLE. If you need exact decimal precision, use Line Protocol ingestion with a configured decimal column.
  • Maximum file size: 500 MB.
  • RBAC: write permissions are checked for the target measurement.

Error Responses

StatusDescription
400Missing database/measurement/file; empty file or no rows; time_column not found; empty or duplicate column names; a time_column rename that collides with an existing time column; or a NaN/Inf value in a floating-point time column
403Insufficient write permissions
413File exceeds 500 MB size limit
422Unreadable Parquet file, or an unsupported column type
500Import execution error