Я пытался создать запись Avro, которая содержит десятичные данные, но потерпела неудачу с AvroTypeException.
Может ли кто-нибудь помочь мне правильно установить десятичные данные?Большое спасибо.
Сообщение об ошибке ниже
AvroTypeException: The datum {'unitPrice': Decimal('22')} is not an example of the schema
и вот мой код Python
from confluent_kafka import avro
from confluent_kafka.avro import AvroProducer
from decimal import Decimal, getcontext
value_schema_str = """
{
"type": "record",
"name": "Customer",
"namespace": "my.test",
"fields": [
{
"name": "unitPrice",
"type": {
"type": "bytes",
"logicalType": "decimal",
"precision": 4,
"scale": 2
}
}
]
}
"""
key_schema_str = """
{
"namespace": "my.test",
"name": "key",
"type": "record",
"fields" : [
{
"name" : "name",
"type" : "string"
}
]
}
"""
getcontext().prec = 2
value_schema = avro.loads(value_schema_str)
key_schema = avro.loads(key_schema_str)
value = {"unitPrice": Decimal(22.22)/1}
key = {"name": "Key"}
avroProducer = AvroProducer({
'bootstrap.servers': 'localhost:9092',
'schema.registry.url': 'http://localhost:8081'
}, default_key_schema=key_schema, default_value_schema=value_schema)
avroProducer.produce(topic='confluent_decimal', value=value, key=key)
avroProducer.flush()