Frage

Ich bin mit Avro 1.4.0 einige Daten aus S3 über den Python avro Bindungen und die boto S3 Bibliothek zu lesen. Wenn ich eine avro.datafile.DataFileReader auf die Datei wie Objekte öffnen zurück von Boto es nicht sofort, wenn es versucht () zu suchen. Denn jetzt, um dieses Ich arbeite durch die S3 liest Objekte in temporären Dateien.

Ich möchte in der Lage sein, durch jedes Python-Objekt zu streamen, dass Stützen lesen (). Kann jemand beraten?

War es hilfreich?

Lösung

Ich bin sehr darauf nicht klar, und dies kann nicht die Antwort sein. Ich war der Eindruck, dass

diter = datafile.DataFileReader(..) 

gibt einen Iterator, so dass Sie die folgenden

tun könnten
for data in diter:
    ....

Korrigieren Sie mich, wenn ich falsch liege hier.

Neubetrachtung meine Antwort:

Sie haben Recht, nicht datafile.DataFileReader nicht mit einem Leser gut spielen, für das versuchen würde scheitern.

nutzt avro.io.BinaryDecoder, die einen Leser akzeptiert.

class BinaryDecoder(object):
    """Read leaf values."""
    def __init__(self, reader):
        """
    reader is a Python object on which we can call read, seek, and tell.
    """
    self._reader = reader

Was Sie tun können, ist Ihre eigene Leser-Klasse erstellen, die diese Funktionen bereitstellt -. Zu lesen, suchen und sagen, aber intern verwendet Boto S3 Bibliothek von Daten zu lesen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top