2016-09-19 98 views
0

我使用boto3從s3存儲桶中讀取avro文件。 但是,我堅持如何實際將avro轉換爲字符串。用boto3讀取avro文件並將其轉換爲字符串(Python)

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

進入這一步後,我不知道該怎麼做。

+0

因此,您讀取對象並將其存儲爲字節變量。你到目前爲止嘗試了什麼?你嘗試打印(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',但是你是否嘗試過傳入body對象? –

相關問題