Можно ли установить просто авро схему без данных? - PullRequest
0 голосов
/ 29 апреля 2020

Я помещаю данные и схему в реестр kafka и схемы с помощью python.

from confluent_kafka import avro

from confluent_kafka.avro import AvroProducer



value_schema_str = """

    {

       "type":"record",

       "name":"myrecord",

       "fields":[

          {

             "name":"ID",

             "type":[

                "null",

                "int"

             ],

             "default":null

          },

          {

             "name":"PRODUCT",

             "type":[

                "null",

                "string"

             ],

             "default":null

          },

          {

             "name":"QUANTITY",

             "type":[

                "null",

                "int"

             ],

             "default":null

          },

          {

             "name":"PRICE",

             "type":[

                "null",

                "int"

             ],

             "default":null

          }

       ]

    }

    """



key_schema_str = """

    {

       "type":"record",

       "name":"key_schema",

       "fields":[

          {

             "name":"ID",

             "type":"int"

          }

       ]

    }

    """





def delivery_report(err, msg):

    """ Called once for each message produced to indicate delivery result.

        Triggered by poll() or flush(). """

    if err is not None:

        print('Message delivery failed: {}'.format(err))

    else:

        print('Message delivered to {} [{}]'.format(msg.topic(), msg.partition()))





if __name__ == '__main__':

    value_schema = avro.loads(value_schema_str)

    key_schema = avro.loads(key_schema_str)

    value = {"ID": 199 , "PRODUCT":"Yagiz Gulbahar", "QUANTITY":1453,"PRICE":61}

    key = {"ID": 199}





    avroProducer = AvroProducer({

        'bootstrap.servers': '10.0.0.0:9092',

        'on_delivery': delivery_report,

        'schema.registry.url': 'http://10.0.0.0:8081'

    }, default_key_schema=key_schema, default_value_schema=value_schema)



    avroProducer.produce(topic='ersin_test_2', key=key, value=value)

    avroProducer.flush()

Можно ли просто поместить схему без данных?

заранее спасибо

...