Как программно получить схему из реестра слитых схем в Python - PullRequest
1 голос
/ 29 февраля 2020

На данный момент я делаю что-то вроде чтения файла avs c, чтобы получить схему

value_schema = avro.load('client.avsc')

Могу ли я сделать что-то, чтобы получить схему из реестра слитых схем, используя topi c -name?

Я нашел один способ, но не понял, как его использовать.

https://github.com/marcosschroh/python-schema-registry-client

Ответы [ 2 ]

4 голосов
/ 01 марта 2020

Использование confluent-kafka-python

from confluent_kafka.avro.cached_schema_registry_client import CachedSchemaRegistryClient

sr = CachedSchemaRegistryClient({
    'url': 'http://localhost:8081',
    'ssl.certificate.location': '/path/to/cert',  # optional
    'ssl.key.location': '/path/to/key'  # optional
})

value_schema = sr.get_latest_schema("orders-value")[1]
key_schema= sr.get_latest_schema("orders-key")[1]

Использование SchemaRegistryClient

Получение схемы по имени субъекта

from schema_registry.client import SchemaRegistryClient


sr = SchemaRegistryClient('localhost:8081')
my_schema = sr.get_schema(subject='mySubject', version='latest')

Получение схемы по идентификатору

from schema_registry.client import SchemaRegistryClient


sr = SchemaRegistryClient('localhost:8081')
my_schema = sr.get_by_id(schema_id=1)
0 голосов
/ 01 марта 2020

Мне так понравилось, у меня это сработало

     import requests
     import os

     SCHEMA_REGISTRY_URL = os.getenv('SCHEMA_REGISTRY_URL');
     print("SCHEMA_REGISTRY_URL: ", SCHEMA_REGISTRY_URL)
     URL = SCHEMA_REGISTRY_URL + '/subjects/' + topic + '/versions/latest/schema'
     r = requests.get(url=URL)
     schema = r.json()


     print("Schema From Schema Registry ==========================>>")
     print("Schema: ", schema)

enter image description here

...