Domanda

Sto usando Avro 1.4.0 per leggere alcuni dati su S3 tramite Python Avro attacchi e il boto S3 biblioteca. Quando apro un avro.datafile.DataFileReader sul file come oggetti restituiti da boto non riesce immediatamente quando si cerca di seek (). Per ora sto lavorando intorno a questo leggendo la S3 oggetti in file temporanei.

Mi piacerebbe essere in grado di trasmettere attraverso ogni oggetto Python che supporti read (). Qualcuno può fornire consulenza?

È stato utile?

Soluzione

io non sono molto chiaro su questo e questo non può essere la risposta. Io ero l'impressione che

diter = datafile.DataFileReader(..) 

restituisce un iteratore in modo che si possa effettuare le seguenti operazioni

for data in diter:
    ....

Correggetemi, se sbaglio qui.

Rivisitare la mia risposta:

Hai ragione, datafile.DataFileReader non gioca bene con un lettore per il quale cercano fallirebbe.

usa avro.io.BinaryDecoder che accetta un lettore.

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

Che cosa si può fare è creare una classe lettore che non fornisce queste funzioni -. Leggi, cercare e raccontare, ma utilizza internamente boto biblioteca S3 di leggere dei dati

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top