0
我使用boto3從s3存儲桶中讀取avro文件。 但是,我堅持如何實際將avro轉換爲字符串。用boto3讀取avro文件並將其轉換爲字符串(Python)
avro_file = file_from_s3.get()['Body'].read()
進入這一步後,我不知道該怎麼做。
我使用boto3從s3存儲桶中讀取avro文件。 但是,我堅持如何實際將avro轉換爲字符串。用boto3讀取avro文件並將其轉換爲字符串(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',但是你是否嘗試過傳入body對象? –
因此,您讀取對象並將其存儲爲字節變量。你到目前爲止嘗試了什麼?你嘗試打印(avro_file)嗎?什麼是你的Python版本? – mootmoot
使用python2.7 – anc1revv