Azure Schema Registry-clientbibliotheek voor Python - versie 1.2.0
Azure Schema Registry is een service voor schemaopslagplaats die wordt gehost door Azure Event Hubs en die schema-opslag, versiebeheer en beheer biedt. Het register wordt gebruikt door serializers om de nettoladinggrootte te verminderen terwijl de nettoladingstructuur wordt beschreven met schema-id's in plaats van volledige schema's.
Broncode | Pakket (PyPi) | API-referentiedocumentatie | Monsters | Changelog
Disclaimer
Ondersteuning voor Azure SDK Python-pakketten voor Python 2.7 is beëindigd op 01 januari 2022. Voor meer informatie en vragen raadpleegt u https://github.com/Azure/azure-sdk-for-python/issues/20691
Aan de slag
Het pakket installeren
Installeer de Azure Schema Registry-clientbibliotheek voor Python met pip:
pip install azure-schemaregistry
Vereisten:
Als u dit pakket wilt gebruiken, hebt u het volgende nodig:
- Azure-abonnement: maak een gratis account
- Azure-schemaregister - Hier volgt de snelstartgids voor het maken van een schemaregistergroep met behulp van de Azure Portal.
- Python 3.7 of hoger - Python installeren
De client verifiëren
Interactie met schemaregister begint met een exemplaar van de klasse SchemaRegistryClient. De clientconstructor gebruikt de volledig gekwalificeerde naamruimte en een Azure Active Directory-referentie:
De volledig gekwalificeerde naamruimte van het schemaregisterexemplaren moet de volgende indeling hebben:
<yournamespace>.servicebus.windows.net
.Een AAD-referentie waarmee het TokenCredential-protocol wordt geïmplementeerd, moet worden doorgegeven aan de constructor. Er zijn implementaties van het
TokenCredential
protocol beschikbaar in het azure-identity-pakket. Als u de referentietypen wilt gebruiken die worden geleverd doorazure-identity
, installeert u de Azure Identity-clientbibliotheek voor Python met pip:
pip install azure-identity
- Als u de asynchrone API wilt gebruiken, moet u bovendien eerst een asynchroon transport installeren, zoals aiohttp:
pip install aiohttp
Maak een client met behulp van de azure-identity-bibliotheek:
from azure.schemaregistry import SchemaRegistryClient
from azure.identity import DefaultAzureCredential
credential = DefaultAzureCredential()
# Namespace should be similar to: '<your-eventhub-namespace>.servicebus.windows.net/'
fully_qualified_namespace = '<< FULLY QUALIFIED NAMESPACE OF THE SCHEMA REGISTRY >>'
schema_registry_client = SchemaRegistryClient(fully_qualified_namespace, credential)
Belangrijkste concepten
Schema: Schema is de organisatie of structuur voor gegevens. Meer gedetailleerde informatie vindt u hier.
Schemagroep: een logische groep vergelijkbare schema's op basis van zakelijke criteria, die meerdere versies van een schema kunnen bevatten. Meer gedetailleerde informatie vindt u hier.
SchemaRegistryClient:
SchemaRegistryClient
biedt de API voor het opslaan en ophalen van schema's in het schemaregister.
Voorbeelden
De volgende secties bevatten verschillende codefragmenten voor enkele van de meest voorkomende schemaregistertaken, waaronder:
- Een schema registreren
- Het schema ophalen op id
- Het schema per versie ophalen
- De id van een schema ophalen
Een schema registreren
Gebruik SchemaRegistryClient.register_schema
de methode om een schema te registreren.
import os
from azure.identity import DefaultAzureCredential
from azure.schemaregistry import SchemaRegistryClient
token_credential = DefaultAzureCredential()
fully_qualified_namespace = os.environ['SCHEMA_REGISTRY_FULLY_QUALIFIED_NAMESPACE']
group_name = os.environ['SCHEMA_REGISTRY_GROUP']
name = "your-schema-name"
format = "Avro"
definition = """
{"namespace": "example.avro",
"type": "record",
"name": "User",
"fields": [
{"name": "name", "type": "string"},
{"name": "favorite_number", "type": ["int", "null"]},
{"name": "favorite_color", "type": ["string", "null"]}
]
}
"""
schema_registry_client = SchemaRegistryClient(fully_qualified_namespace=fully_qualified_namespace, credential=token_credential)
with schema_registry_client:
schema_properties = schema_registry_client.register_schema(group_name, name, definition, format)
id = schema_properties.id
Het schema ophalen op id
Haal de schemadefinitie en de bijbehorende eigenschappen op op schema-id.
import os
from azure.identity import DefaultAzureCredential
from azure.schemaregistry import SchemaRegistryClient
token_credential = DefaultAzureCredential()
fully_qualified_namespace = os.environ['SCHEMA_REGISTRY_FULLY_QUALIFIED_NAMESPACE']
schema_id = 'your-schema-id'
schema_registry_client = SchemaRegistryClient(fully_qualified_namespace=fully_qualified_namespace, credential=token_credential)
with schema_registry_client:
schema = schema_registry_client.get_schema(schema_id)
definition = schema.definition
properties = schema.properties
Het schema per versie ophalen
Haal de schemadefinitie en de bijbehorende eigenschappen op per schemaversie.
import os
from azure.identity import DefaultAzureCredential
from azure.schemaregistry import SchemaRegistryClient
token_credential = DefaultAzureCredential()
fully_qualified_namespace = os.environ['SCHEMA_REGISTRY_FULLY_QUALIFIED_NAMESPACE']
group_name = os.environ["SCHEMAREGISTRY_GROUP"]
name = "your-schema-name"
version = int("<your schema version>")
schema_registry_client = SchemaRegistryClient(fully_qualified_namespace=fully_qualified_namespace, credential=token_credential)
with schema_registry_client:
schema = schema_registry_client.get_schema(group_name=group_name, name=name, version=version)
definition = schema.definition
properties = schema.properties
De id van een schema ophalen
Haal de schema-id van een schema op op basis van schemadefinitie en de bijbehorende eigenschappen.
import os
from azure.identity import DefaultAzureCredential
from azure.schemaregistry import SchemaRegistryClient
token_credential = DefaultAzureCredential()
fully_qualified_namespace = os.environ['SCHEMA_REGISTRY_FULLY_QUALIFIED_NAMESPACE']
group_name = os.environ['SCHEMA_REGISTRY_GROUP']
name = "your-schema-name"
format = "Avro"
definition = """
{"namespace": "example.avro",
"type": "record",
"name": "User",
"fields": [
{"name": "name", "type": "string"},
{"name": "favorite_number", "type": ["int", "null"]},
{"name": "favorite_color", "type": ["string", "null"]}
]
}
"""
schema_registry_client = SchemaRegistryClient(fully_qualified_namespace=fully_qualified_namespace, credential=token_credential)
with schema_registry_client:
schema_properties = schema_registry_client.register_schema(group_name, name, definition, format)
id = schema_properties.id
Problemen oplossen
Algemeen
Schemaregisterclients genereren uitzonderingen die zijn gedefinieerd in Azure Core.
Logboekregistratie
Deze bibliotheek maakt gebruik van de standaardbibliotheek voor logboekregistratie voor logboekregistratie. Basisinformatie over HTTP-sessies (URL's, headers, enzovoort) wordt geregistreerd op INFO-niveau.
Gedetailleerde logboekregistratie op foutopsporingsniveau, inclusief aanvraag-/antwoordteksten en niet-bewerkte headers, kan worden ingeschakeld op een client met het logging_enable
argument:
import sys
import logging
from azure.schemaregistry import SchemaRegistryClient
from azure.identity import DefaultAzureCredential
# Create a logger for the SDK
logger = logging.getLogger('azure.schemaregistry')
logger.setLevel(logging.DEBUG)
# Configure a console output
handler = logging.StreamHandler(stream=sys.stdout)
logger.addHandler(handler)
credential = DefaultAzureCredential()
# This client will log detailed information about its HTTP sessions, at DEBUG level
schema_registry_client = SchemaRegistryClient("your_fully_qualified_namespace", credential, logging_enable=True)
Op dezelfde manier kan logging_enable
logboekregistratie voor één bewerking inschakelen, zelfs wanneer dit niet is ingeschakeld voor de client:
schema_registry_client.get_schema(schema_id, logging_enable=True)
Volgende stappen
Meer voorbeeldcode
Bekijk de map met voorbeelden voor gedetailleerde voorbeelden van het gebruik van deze bibliotheek om schema's te registreren en op te halen uit het schemaregister.
Bijdragen
Wij verwelkomen bijdragen en suggesties voor dit project. Voor de meeste bijdragen moet u instemmen met een licentieovereenkomst voor bijdragers (CLA: Contributor License Agreement) waarin u verklaart dat u gerechtigd bent ons het recht te geven uw bijdrage te gebruiken, en dat u dit ook doet. Ga naar https://cla.microsoft.com voor meer informatie.
Wanneer u een pull-aanvraag indient, wordt met een CLA-bot automatisch bepaald of u een CLA moet verschaffen en wordt de pull-aanvraag dienovereenkomstig opgemaakt (bijvoorbeeld met een label of commentaar). Volg gewoon de instructies van de bot. U hoeft dit maar eenmaal te doen voor alle repo's waar gebruik wordt gemaakt van onze CLA.
Op dit project is de Microsoft Open Source Code of Conduct (Microsoft Open Source-gedragscode) van toepassing. Zie de Veelgestelde vragen over de gedragscode voor meer informatie of neem contact op opencode@microsoft.com met eventuele aanvullende vragen of opmerkingen.
Azure SDK for Python