avro
Consume a stream of Avro OCF datum.
Introduced in version 4.25.0.
Avro JSON format
This scanner yields documents formatted as Avro JSON when decoding with Avro schemas. In this format the value of a union is encoded in JSON as follows:
-
if its type is
null, then it is encoded as a JSONnull; -
otherwise it is encoded as a JSON object with one name/value pair whose name is the type’s name and whose value is the recursively encoded value. For Avro’s named types (record, fixed or enum) the user-specified name is used, for other types the type name is used.
For example, the union schema ["null","string","Foo"], where Foo is a record name, would encode:
-
nullasnull; -
the string
"a"as{"string": "a"}; and -
a
Fooinstance as{"Foo": {…}}, where{…}indicates the JSON encoding of aFooinstance.
However, it is possible to instead create documents in standard/raw JSON format by setting the field raw_json to true.
Metadata
This scanner adds the following metadata fields to each message:
-
avro_schema: The Parsing Canonical Form of the Avro schema in the OCF file header. -
avro_schema_fingerprint: The CRC-64-AVRO (Rabin) fingerprint of the schema’s canonical form, as an unsigned 64-bit integer.
-
Common
-
Advanced
scanner:
avro: {}
scanner:
avro:
raw_json: false
max_decompressed_block_bytes: 16777216
Fields
max_decompressed_block_bytes
The maximum size, in bytes, that a single compressed Avro OCF block is allowed to expand to when decompressed. This guards against decompression-amplification ("deflate bomb") inputs, where a tiny compressed block would otherwise expand into a very large allocation. A block that exceeds this limit causes the scan to fail rather than be materialized. There is deliberately no way to disable this cap: pipelines with legitimately larger blocks should set an explicit higher value. Set to 0 to use the default (equivalent to omitting the field).
Requires version 4.109.0 or later.
Type: int
Default: 16777216
raw_json
Whether to decode messages into normal JSON rather than Avro JSON. When true, this unwraps union values (bare values instead of {"type": value} wrappers).
Type: bool
Default: false