CentralMesh.io

Kafka Connect
AdSense Banner (728x90)

7.3 Transforming Keys, Values, and Headers

Target the correct part of a Connect record and chain transforms predictably.

Transforming Keys, Values, and Headers

Summary

SMTs can transform keys, values, and headers separately. Understanding which to transform is crucial for correct behavior.

VALUE TRANSFORMS

Most SMTs transform the message value. Use $Value suffix:

json
1"transforms.maskEmail.type": "org.apache.kafka.connect.transforms.MaskField$Value"

KEY TRANSFORMS

Transform message keys using $Key suffix:

json
1"transforms.extractId.type": "org.apache.kafka.connect.transforms.ExtractField$Key",
2"transforms.extractId.field": "id"

HEADER TRANSFORMS

Add or modify headers:

json
1"transforms.addHeader.type": "org.apache.kafka.connect.transforms.InsertHeader",
2"transforms.addHeader.header": "source",
3"transforms.addHeader.value.literal": "database"

VALUETOKEY - COPY TO KEY

Copy a field from value to key for partitioning:

json
1"transforms.setKey.type": "org.apache.kafka.connect.transforms.ValueToKey",
2"transforms.setKey.fields": "user_id"

Key ideas

Use $Value for value transforms (most common).

Use $Key for key transforms.

Headers store metadata separately.

ValueToKey enables custom partitioning.

Chain transforms for complex operations.