如何基于现有的 Avro 架构生成示例数据?

How to generate sample data based on the existing Avro schema?

提问人:Dmytro Chasovskyi 提问时间:10/3/2023 更新时间:10/4/2023 访问量:84

问:

我正在对 Kafka 进行性能测试,需要测试不同的大型模式。目前,我正在进行基于 Avro 的负载测试。

通常,在使用 Kafka 时,您拥有数据并从中生成架构。在此方案中,我必须测试多个架构,我不拥有这些架构的数据。我需要根据现有架构生成示例 Avro 数据。

有哪些可能的解决方案?

尝试过的解决方案:

  • 我尝试过手动制作数据,但太繁琐了。
  • 搜索自动发电机没有运气
  • 搜索了官方 Kafka 文档以获取可能的解决方案
  • 我尝试编写自己的内容,但对 Avro 几乎没有经验,因此它似乎太自定义且无法继续维护

如何基于现有的 Avro 架构生成示例数据?

apache-kafka avro 数据生成 存根数据生成

评论


答:

1赞 Scott 10/4/2023 #1

如果您熟悉 Python,该库具有从架构生成数据的实用程序:https://fastavro.readthedocs.io/en/latest/utils.htmlfastavro

举个例子:

from fastavro.utils import generate_many

schema = {
    'doc': 'A weather reading.',
    'name': 'Weather',
    'namespace': 'test',
    'type': 'record',
    'fields': [
        {'name': 'station', 'type': 'string'},
        {'name': 'time', 'type': 'long'},
        {'name': 'temp', 'type': 'int'},
    ],
}

print(list(generate_many(schema, 5)))