#apache-kafka #avro #kafka-connect-datagen #avro-random-generator
Вопрос:
У меня возникли проблемы с вводом правильных данных в десятичное поле ( type=bytes
с логическим типом=»десятичное») при использовании kafka-connect-datagen
.
Я пытаюсь настроить a kafka-connect-datagen
для генерации данных в теме, которая обычно заполняется a kafka-connect-jdbc
-коннектором. Я хочу настроить это для того, чтобы генерировать тестовые данные локально.
Десятичное поле в моей «теме-схеме» автоматически генерируется kafka-connect-jdbc
и определяется как:
{
"name": "TRANSACTION_AMOUNT",
"type": [
"null",
{
"type": "bytes",
"scale": 2,
"precision": 15,
"connect.version": 1,
"connect.parameters": {
"scale": "2",
"connect.decimal.precision": "15"
},
"connect.name": "org.apache.kafka.connect.data.Decimal",
"logicalType": "decimal"
}
],
"default": null
},
В avro-random-generator
-schema ( datagen-schema.json
) определено следующее поле для TRANSACTION_AMOUNT:
{
"name": "TRANSACTION_AMOUNT",
"type": {
"type": "bytes",
"arg.properties": {
"options": [
"10.00"
]
}
}
},
Запуск этого в kafka-connect со следующей kafka-connect-datagen
конфигурацией:
{
"name": "datagen",
"config": {
"connector.class": "io.confluent.kafka.connect.datagen.DatagenConnector",
"kafka.topic": "transaction.events",
"schema.filename": "/path/to/datagen-schema.json",
"schema.keyfield": "PERSON_ID",
"key.converter": "org.apache.kafka.connect.storage.StringConverter",
"value.converter": "io.confluent.connect.avro.AvroConverter",
"value.converter.schema.registry.url": "http://schema-registry:8081",
"value.converter.auto.register.schemas": "false",
"value.converter.use.latest.version": "true",
"value.converter.schemas.enable": "false",
"max.interval": 1000,
"iterations": 10000000,
"tasks.max": "1"
}
}
This results in the following data:
"TRANSACTION_AMOUNT" : "2112617308.64",
I suspect there are some encoding happening here which I am not aware of.
Base64
В документации по avro-генератору случайных чисел запись параметров закодирована в кодировке base64 («NDI=» -> «42»). Если я изменю поле options-на версию «10.00» в кодировке base64 (то есть MTAuMDA=
), оно все равно не будет работать (я получаю 55721506110274440.29
).
ARG CLI
Генератор случайных чисел avro поставляется с интерфейсом командной строки, который можно использовать для создания данных из схемы. При использовании этого в моей схеме я получаю правильную запись параметров, и ни одна из зашифрованных версий, которые я получаю по этой теме.