Как создать десятичную запись avro с помощью confluent-kafka-python? - PullRequest
0 голосов
/ 26 декабря 2018

Я пытался создать запись 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...