2016-09-19 14 views
0

私はs3バケットからavroファイルを読み込むためにboto3を使用しています。 しかし、実際にavroを文字列に変換する方法については固執しています。avotoファイルをboto3で読み込み、文字列に変換する(Python)

avro_file = file_from_s3.get()['Body'].read() 

この手順を実行した後、私は何をすべきかわかりません。

+0

したがって、オブジェクトを読み取り、バイト変数として保存します。これまでに何を試してみましたか? print(avro_file)を試しましたか?あなたのpythonのバージョンは何ですか? – mootmoot

+0

python2.7を使用する – anc1revv

答えて

0

私は方法を見つけました。 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 
+0

これはPython 2でのみ動作し、 'download_fileobj'は明示的にバイトインタフェースを要求し、avroの例はバイナリモードでも開くことを示します。あなたは 'BytesIO'を使うことができますが、本体オブジェクトを渡してみましたか? –

関連する問題