Classes
When to Use
Use this reader when you want to:- Load
.jfrrecordings into an offline Pinot table. - Analyze JVM, GC, thread, allocation, and profiling events with SQL.
- Ingest StarTree query tracing recordings and join operational JFR fields with trace context.
- Process LZ4-compressed JFR files whose file name ends in
.lz4.
Input Files
The reader supports:
Use file-name filters to make sure the ingestion job only selects JFR files:
Record Reader Config
The JFR config has one option:Standalone Batch Job Example
UsedataFormat: 'jfr' with the JFR record reader and config class:
FileIngestionTask Example
For minion-based file ingestion, use the JFR input format and keep the file filter narrow:className and configClassName. Use FileIngestionTask when your cluster has the jfr format registered and available to minions.
Output Fields
Every output row includes:
The reader also flattens JFR event fields:
Because JFR event types differ, the set of populated columns varies by row. Use default null values or Pinot null handling for sparse event fields.
Minimal Schema Example
This schema captures common fields that are useful for query profiling:Table Config Example
Use indexes on event type, stack frame, trace fields, and time ranges to make profile exploration faster:Denormalized StarTree Trace Context
Whendenormalize is true, the reader performs a pre-pass over the recording:
- Finds StarTree JFR events whose event type starts with
startreeand that containtraceId. - Records each event’s
threadId,startTime,duration,traceId,spanId, andspanName. - Rewinds the recording.
- Enriches non-StarTree events on the same thread when the event start time falls inside a recorded StarTree trace frame.

