【问题标题】:Random Avro data generator in Java/ScalaJava/Scala 中的随机 Avro 数据生成器
【发布时间】:2019-01-18 09:29:46
【问题描述】:

这是否可以使用org.apache.avro 库通过指定架构生成随机 Avro 数据? 我需要用 Kafka 生成这些数据。

我试图找到某种随机数据生成器进行测试,但是,我偶然发现了用于此类数据生成器或 GenericRecord 使用的工具。工具不太适合我,因为存在特定的文件依赖性(例如读取文件等),并且据我所知,应该逐个生成 GenericRecord。

还有其他针对 Java/Scala 的解决方案吗?

更新:我找到了this class,但似乎无法从 org.apache.avro 版本 1.8.2 访问它

【问题讨论】:

    标签: scala apache-kafka avro


    【解决方案1】:

    您需要读取文件的原因是它匹配一个模式,该模式定义了需要创建的字段以及哪些类型。

    这不是硬性要求,没有什么可以阻止通过 Avro 的 SchemaBuilder 类在代码中构建的随机 GenericSpecific 记录的创建

    参见this repo for example,它使用从 AVSC 模式生成的 POJO(同样可以使用 SchemaBuilder 代替)到 Java 类中。

    甚至是你链接到uses a schema file的课程

    【讨论】:

      【解决方案2】:

      所以我个人可能会使用 Avro4s (https://github.com/sksamuel/avro4s) 和 scalachecks (https://www.scalacheck.org) Gen 来模拟此类测试。

      您可以使用 scalacheck 生成案例类的随机实例,并使用 avro4 将它们转换为通用记录、提取它们的架构等。

      还有 avro-mocker https://github.com/speedment/avro-mocker 虽然我不知道挂钩代码有多么容易。

      【讨论】:

      • 似乎仍然需要使用 Avro4s 逐一创建特定记录。我对吗?因为我需要批量至少有 100 条记录进行测试和手动创建它们很乏味
      • 这就是 scalacheck Gen 的用武之地。有了它,您可以创建给定案例类的任意数量的实例,然后您可以使用 Avro4s 将其转换为 GenericRecord
      【解决方案3】:

      我只是使用 Podam http://mtedone.github.io/podam/ 生成 POJO,然后使用 Java Avro 库 https://avro.apache.org/docs/1.8.1/gettingstartedjava.html#Serializing 将它们输出到 Avro

      【讨论】:

      猜你喜欢
      • 2015-12-06
      • 2015-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多