Pustaka klien Azure Schema Registry untuk Python - versi 1.2.0
Azure Schema Registry adalah layanan repositori skema yang dihosting oleh Azure Event Hubs, menyediakan penyimpanan, penerapan versi, dan manajemen skema. Registri dimanfaatkan oleh serializer untuk mengurangi ukuran payload sambil menjelaskan struktur payload dengan pengidentifikasi skema daripada skema penuh.
Kode sumber | Paket (PyPi) | Dokumentasi | referensi API Sampel | Changelog
Pengelakan
Dukungan paket Azure SDK Python untuk Python 2.7 telah berakhir pada 01 Januari 2022. Untuk informasi lebih lanjut dan pertanyaan, silakan merujuk ke https://github.com/Azure/azure-sdk-for-python/issues/20691
Memulai
Menginstal paket
Instal pustaka klien Azure Schema Registry untuk Python dengan pip:
pip install azure-schemaregistry
Prasyarat:
Untuk menggunakan paket ini, Anda harus memiliki:
- Langganan Azure - Membuat akun gratis
- Azure Schema Registry - Berikut adalah panduan mulai cepat untuk membuat grup Schema Registry menggunakan portal Azure.
- Python 3.7 atau yang lebih baru - Instal Python
Mengautentikasi klien
Interaksi dengan Schema Registry dimulai dengan instans kelas SchemaRegistryClient. Konstruktor klien mengambil namespace layanan yang sepenuhnya memenuhi syarat dan kredensial Azure Active Directory:
Namespace yang sepenuhnya memenuhi syarat dari instans Schema Registry harus mengikuti format:
<yournamespace>.servicebus.windows.net
.Kredensial AAD yang mengimplementasikan protokol TokenCredential harus diteruskan ke konstruktor. Ada implementasi protokol yang
TokenCredential
tersedia dalam paket identitas azure. Untuk menggunakan jenis kredensial yang disediakan olehazure-identity
, instal pustaka klien Azure Identity untuk Python dengan pip:
pip install azure-identity
- Selain itu, untuk menggunakan API asinkron, Anda harus terlebih dahulu menginstal transportasi asinkron, seperti aiohttp:
pip install aiohttp
Buat klien menggunakan pustaka azure-identity:
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)
Konsep utama
Skema: Skema adalah organisasi atau struktur untuk data. Informasi lebih rinci dapat ditemukan di sini.
Grup Skema: Grup logis dari skema serupa berdasarkan kriteria bisnis, yang dapat menyimpan beberapa versi skema. Informasi lebih rinci dapat ditemukan di sini.
SchemaRegistryClient:
SchemaRegistryClient
menyediakan API untuk menyimpan dan mengambil skema dalam registri skema.
Contoh
Bagian berikut ini menyediakan beberapa cuplikan kode yang mencakup beberapa tugas Schema Registry yang paling umum, termasuk:
- Mendaftarkan skema
- Dapatkan skema menurut id
- Mendapatkan skema berdasarkan versi
- Mendapatkan id skema
Mendaftarkan skema
Gunakan SchemaRegistryClient.register_schema
metode untuk mendaftarkan skema.
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
Dapatkan skema menurut id
Dapatkan definisi skema dan propertinya dengan id skema.
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
Mendapatkan skema berdasarkan versi
Dapatkan definisi skema dan propertinya berdasarkan versi skema.
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
Mendapatkan id skema
Dapatkan id skema skema menurut definisi skema dan propertinya.
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
Pemecahan Masalah
Umum
Klien Schema Registry menaikkan pengecualian yang ditentukan di Azure Core.
Pembuatan Log
Pustaka ini menggunakan pustaka pengelogan standar untuk pengelogan. Informasi dasar tentang sesi HTTP (URL, header, dll.) dicatat di tingkat INFO.
Pengelogan tingkat DEBUG terperinci, termasuk isi permintaan/respons dan header yang tidak diredaksikan, dapat diaktifkan pada klien dengan logging_enable
argumen :
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)
Demikian pula, logging_enable
dapat mengaktifkan pengelogan mendetail untuk satu operasi, meskipun tidak diaktifkan untuk klien:
schema_registry_client.get_schema(schema_id, logging_enable=True)
Langkah berikutnya
Lebih banyak kode sampel
Silakan lihat direktori sampel untuk contoh terperinci tentang cara menggunakan pustaka ini untuk mendaftar dan mengambil skema ke/dari Schema Registry.
Berkontribusi
Proyek ini menyambut baik kontribusi dan saran. Sebagian besar kontribusi mengharuskan Anda menyetujui Perjanjian Lisensi Kontributor (CLA) yang menyatakan bahwa Anda memiliki hak untuk, dan benar-benar melakukannya, memberi kami hak untuk menggunakan kontribusi Anda. Untuk detailnya, kunjungi https://cla.microsoft.com.
Ketika Anda mengirimkan permintaan tarik, CLA-bot akan secara otomatis menentukan apakah Anda perlu memberikan CLA dan menghias PR dengan tepat (misalnya, label, komentar). Cukup ikuti instruksi yang diberikan oleh bot. Anda hanya perlu melakukan ini sekali di semua repos menggunakan CLA kami.
Proyek ini telah mengadopsi Kode Etik Sumber Terbuka Microsoft. Untuk informasi selengkapnya, lihat Tanya Jawab Umum Tata Tertib atau hubungi opencode@microsoft.com untuk pertanyaan atau komentar lainnya.
Azure SDK for Python
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk