如何在Python中从S3读取Avro文件?

5

我有一堆Avro文件,希望从S3上逐个读取。虽然我可以按字节读取文件,但是我想知道在这之后怎样迭代条目。当前的代码:

conn = boto.s3.connect_to_region("us-east-1")
my_bucket=boto.s3.bucket.Bucket(conn, "my_bucket")
my_key = my_bucket.get_key("folder/file.avro")
raw_bytes = my_key.read()

test_schema = '''
{
  "namespace": "com.company",
  "type": "record",
  "name": "MimeMessage_v2",
  "fields": [
    {
      "name": "record_timestamp",
      "type": "long"
    },
    {
      "name": "contents",
      "type": "bytes"
    }
  ],
  "message_id": 2
}
'''
schema = avro.schema.Parse(test_schema)
#this is the problematic section
dreader = DatumReader(schema, schema)
v = dreader.read(raw_bytes)

我想知道如何正确读取包含 Avro 文件字节的变量。

1个回答

3

以下是我在Python 3中使用的一种方法:

from avro.datafile import DataFileReader
avro_bytes = io.BytesIO(raw_bytes)
reader = DataFileReader(avro_bytes, avro.io.DatumReader())
for line in reader:
    print(line)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接