A Kafka Connect SMT that allows you to add the record key to the value as a named field.
The KeyToField
transformation is designed to enhance Kafka Connect functionality by including the record key as a field within the record's value. This can be particularly useful in scenarios where downstream systems require access to the original key alongside the record data.
This SMT was featured on Confluent's Newsletter! 🚀
- Add the record key to the value as a named field.
- Customizable field name and delimiter.
- Use the latest release on GitHub, or build the JAR file from source using Maven:
mvn clean package
- Copy the generated JAR file (
keytofield-transform-<version>.jar
) to the Kafka Connect plugins directory. - Restart Kafka Connect for the reload the plugin directory.
- Update your connector with the SMT configuration
The KeyToField transformation can be configured with the following properties:
field.name
: Name of the field to insert the Kafka key to (default:kafkaKey
).field.delimiter
: Delimiter to use when concatenating the key fields (default:-
).
To use the KeyToField
transformation, add it to your Kafka Connect connector configuration:
transforms=keyToField
transforms.keyToField.type=com.github.eladleev.kafka.connect.transform.keytofield.KeyToFieldTransform
transforms.keyToField.field.name=primaryKey
transforms.keyToField.field.delimiter=_
Consider a Kafka topic with the following record:
{
"key": {
"id": 123,
"timestamp": 1644439200000
},
"value": {
"data": "example"
}
}
After applying the KeyToField
transformation, the record will be transformed as follows:
{
"key": {
"id": 123,
"timestamp": 1644439200000
},
"value": {
"data": "example",
"primaryKey": "123_1644439200000"
}
}
For your convenience, under dev/
you can find a docker-compose
file that contains all necessary components for local development and testing. Kafka Connect will automatically load the connector from the target/
directory.
Use the attached bash script to submit a new Kafka Connect connector. Adminer
can be used to ingest new data to the database, reflected by an event in Kafka.
Please read CONTRIBUTING.md for details of submitting a pull requests.
This project is licensed under the Apache License - see the LICENSE file for details.