私はs3バケットからavroファイルを読み込むためにboto3を使用しています。 しかし、実際にavroを文字列に変換する方法については固執しています。avotoファイルをboto3で読み込み、文字列に変換する(Python)
avro_file = file_from_s3.get()['Body'].read()
この手順を実行した後、私は何をすべきかわかりません。
私はs3バケットからavroファイルを読み込むためにboto3を使用しています。 しかし、実際にavroを文字列に変換する方法については固執しています。avotoファイルをboto3で読み込み、文字列に変換する(Python)
avro_file = file_from_s3.get()['Body'].read()
この手順を実行した後、私は何をすべきかわかりません。
私は方法を見つけました。 PythonのStringIOとboto3のdownload_fileobj()を使用する必要があります。
import boto3
import StringIO
from avro.datafile import DataFileReader, DataFileWriter
from avro.io import DatumReader, DatumWriter
output = StringIO.StringIO()
latest_file_object = s3_client.Object('bucket_name','latest_file')
latest_file_object.download_fileobj(output)
reader = DataFileReader(output, DatumReader())
for r in reader:
print r
これはPython 2でのみ動作し、 'download_fileobj'は明示的にバイトインタフェースを要求し、avroの例はバイナリモードでも開くことを示します。あなたは 'BytesIO'を使うことができますが、本体オブジェクトを渡してみましたか? –
したがって、オブジェクトを読み取り、バイト変数として保存します。これまでに何を試してみましたか? print(avro_file)を試しましたか?あなたのpythonのバージョンは何ですか? – mootmoot
python2.7を使用する – anc1revv