Ich versuche die Python Avro-Bibliothek ( Ссылка ) zu verwenden, um eine von JAVA generierte AVRO-Datei zu lesen. Da das Schema bereits in die avro-Datei eingebettet ist, muss ich eine Schemadatei angeben. Gibt es eine Möglichkeit, es automatisch zu extrahieren?
Ein anderes Paket namens fastavro ( Ссылка ) kann ein avro-Schema extrahieren. Ist das Handbuch, das die Schemadatei im Python-arvo-Paket spezifiziert, vom Entwurf abhängig? Vielen Dank.
Eine direkte Untersuchung von /usr/local/lib/python2.7/site-packages/avro/datafile.py
enthüllt die Antwort:
Seltsamerweise gibt es in Java eine spezielle Methode dafür: reader.getSchema()
.
Ich benutze Python 3.4 und Avro Paket 1.7.7
Für die Verwendung von Schemadateien:
%Vor%In meinem Fall habe ich Folgendes getan, um das Schema als "konsumierbares" Python-Wörterbuch zu erhalten, das nützliche Informationen wie einen Schemanamen usw. enthält:
%Vor% Das reader.meta
ist ein Wörterbuch, das ziemlich nutzlos ist, da es 2 Schlüssel enthält: avro.codec
und avro.schema
, die beide bytes
Objekte sind (also musste ich es analysieren, um auf Eigenschaften zuzugreifen ).