AVROを使用して、探すことができないストリームを処理するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/3783453

  •  04-10-2019
  •  | 
  •  

質問

AVRO 1.4.0を使用して、Python Avro BindingsとBoto S3ライブラリを介してS3のデータを読み取ります。 botoによって返されたオブジェクトのようなファイルにavro.datafile.datafileReaderを開くと、()を模索しようとするとすぐに失敗します。今のところ、S3オブジェクトを一時ファイルに読み取ることでこれを回避しています。

read()をサポートするPythonオブジェクトを介してストリーミングできるようにしたいと思います。誰かがアドバイスを提供できますか?

役に立ちましたか?

解決

私はこれについてあまり明確ではなく、これが答えではないかもしれません。私はその印象でした

diter = datafile.DataFileReader(..) 

次のことをすることができるようにイテレーターを返します

for data in diter:
    ....

私がここで間違っているなら、私を修正してください。

私の答えを再訪する:

あなたは正しいです、datafile.datafilereaderは、シークが失敗する読者とうまくいきません。

読者を受け入れるavro.io.binarydecoderを使用します。

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

できることは、これらの機能を提供する独自のリーダークラスを作成することです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top