| Crates.io | otlp2parquet |
| lib.rs | otlp2parquet |
| version | 0.9.0 |
| created_at | 2025-11-29 01:09:28.484197+00 |
| updated_at | 2026-01-19 03:58:36.63803+00 |
| description | Stream OpenTelemetry logs, metrics, and traces to Parquet files |
| homepage | |
| repository | https://github.com/smithclay/otlp2parquet |
| max_upload_size | |
| id | 1956227 |
| size | 696,742 |
What if your observability data was just a bunch of Parquet files?
Receive OpenTelemetry logs, metrics, and traces and write them as Parquet files to local disk or S3-compatible storage. Query with duckdb, Spark, pandas, or anything that reads Parquet.
If you want to stream real-time observability data directly to AWS, Azure or Cloudflare: check out the related otlp2pipeline project.
flowchart TB
subgraph Sources["OpenTelemetry Sources"]
Traces
Metrics
Logs
end
subgraph otlp2parquet["otlp2parquet"]
Decode["Decode"] --> Arrow["Arrow"] --> Write["Parquet"]
end
subgraph Storage["Storage"]
Local["Local File"]
S3["S3-Compatible"]
end
Query["Query Engines"]
Sources --> otlp2parquet
otlp2parquet --> Storage
Query --> Storage
# requires rust toolchain: `curl https://sh.rustup.rs -sSf | sh`
cargo install otlp2parquet
otlp2parquet
Server starts on http://localhost:4318. Send a simple OTLP HTTP log:
# otlp2parquet batches writes to disk every BATCH_AGE_MAX_SECONDS by default
curl -X POST http://localhost:4318/v1/logs \
-H "Content-Type: application/json" \
-d '{"resourceLogs":[{"scopeLogs":[{"logRecords":[{"body":{"stringValue":"hello world"}}]}]}]}'
Query it:
# see https://duckdb.org/install
duckdb -c "SELECT * FROM './data/logs/**/*.parquet'"
Print configuration to receive OTLP from a collector, Claude Code, or Codex:
otlp2parquet connect otel-collector
otlp2parquet connect claude-Code
otlp2parquet connect codex
docker-compose up
Logs, Metrics, Traces via OTLP/HTTP (protobuf or JSON, gzip compression supported). No gRPC support for now.
/v1/logs, /v1/metrics, /v1/traces (protobuf or JSON; gzip supported)logs/{service}/year=.../hour=.../{ts}-{uuid}.parquet, metrics/{type}/{service}/..., traces/{service}/...OpenTelemetry Arrow alignment
Additional platforms: Azure Functions; Kubernetes manifests