Converters

Converters and Serialization Formats

Connectors see Connect's own types (structs, Decimal, Timestamp) with an optional schema; a converter maps them to bytes. Workers set defaults; connectors may override them.

Converters and where the schema lives
Converter Bytes in Kafka 129 Where the schema lives
StringConverter, ByteArrayConverter, JsonConverter (schemas off) Text, bytes, plain JSON Nowhere
JsonConverter, schemas on {"schema": ..., "payload": ...} In every record
JsonConverter + schema.content Plain JSON In the sink's config (Kafka 4.2+)
Avro 129 , Protobuf, JSON Schema Bytes plus a schema ID In a registry (Schema Registry)

The schema has to come from somewhere, as the order sink shows without one:

listings/l0686_noschema.sh: the same sink without a schema, both converter settingsShell
# The 6.8.5 sink without schema.content, once expecting an envelope and once schemaless
C=localhost:33083/connectors/booknest-orders-noschema
for e in true false; do
  jq --arg e $e '. + {"table.name.format": "test", "value.converter.schemas.enable": $e}' \
    listings/orders-sink.json > test.json
  curl -s -X PUT -H 'Content-Type: application/json' -d @test.json $C/config >/dev/null
  sleep 15; curl -s $C/status | jq -r --arg e $e '.tasks[0] | "\($e): \(.state): \(.trace |
    split("\n") | map(select(test("^Caused"))) | last | sub(".*errors\\."; "") | .[0:76])"'
  curl -s -X DELETE $C
done
Output
true: FAILED: DataException: JsonConverter with schemas.enable requires "schema" and "payl
false: FAILED: ConnectException: PK mode for table 'test' is RECORD_VALUE, but record value

The shop never wrote the envelope, which would triple each event's size; a schemaless map gives the JDBC sink nothing to build a table from. schema.content (KIP-1054) suits one fixed schema; a registry is the usual production answer.