如何在Windows 10上使用avro-python3解析文件?

我已将 AVRO 文件(带有 JSON 负载)从 Microsoft Azure 下载到我的 Windows 10 计算机:

https://img1.mukewang.com/650938ef0001c7d818410563.jpg

然后通过 pip 安装 python 3.8.5 和 avro 1.10.0 我尝试运行以下脚本:


import os, avro

from avro.datafile import DataFileReader, DataFileWriter

from avro.io import DatumReader, DatumWriter


reader = DataFileReader(open("48.avro", "rb"), DatumReader())

for d in reader:

    print(d)

reader.close()

不幸的是,脚本没有打印任何内容。


然后我四处搜索并尝试添加如下所示的架构:


schema_str = """

{

  "type" : "record",

  "name" : "EventData",

  "namespace" : "Microsoft.ServiceBus.Messaging",

  "fields" : [ {

    "name" : "SequenceNumber",

    "type" : "long"

  }, {

    "name" : "Offset",

    "type" : "string"

  }, {

    "name" : "EnqueuedTimeUtc",

    "type" : "string"

  }, {

    "name" : "SystemProperties",

    "type" : {

      "type" : "map",

      "values" : [ "long", "double", "string", "bytes" ]

    }

  }, {

    "name" : "Properties",

    "type" : {

      "type" : "map",

      "values" : [ "long", "double", "string", "bytes", "null" ]

    }

  }, {

    "name" : "Body",

    "type" : [ "null", "bytes" ]

  } ]

}

"""

schema = avro.schema.parse(schema_str)

reader = DataFileReader(open("48.avro", "rb"), DatumReader(schema, schema))

for d in reader:

    print(d)

reader.close()

但这并没有帮助,仍然没有打印任何内容。


虽然我期待会打印字典对象列表......


墨色风雨
浏览 109回答 1
1回答

喵喔喔

正如 OneCricketeer 建议使用 PySpark 读取 EventHub 生成的 avro 文件。此处,PySpark:反序列化 eventhub 捕获 avro 文件中包含的 Avro 序列化消息就是这样的示例。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python