Генератор случайных данных Avro на Java / Scala - PullRequest
0 голосов
/ 18 января 2019

Возможно ли генерировать случайные данные Avro по указанной схеме с использованием библиотеки org.apache.avro? Мне нужно получить эти данные с Кафкой.

Я попытался найти какой-нибудь генератор случайных данных для тестирования, однако я наткнулся на инструменты для такого генератора данных или использования GenericRecord. Инструменты не очень подходят для меня, поскольку существует определенная файловая зависимость (например, чтение файла и т. Д.), И GenericRecord должен создаваться один за другим, как я понял.

Есть ли другие решения для Java / Scala?

ОБНОВЛЕНИЕ: Я нашел этот класс , но он не доступен из org.apache.avro версии 1.8.2

.

Ответы [ 3 ]

0 голосов
/ 18 января 2019

Причина, по которой вам нужно прочитать файл, состоит в том, что он соответствует схеме, которая определяет поля, которые необходимо создать, и каких типов.

Это не сложное требование, и ничто не помешает созданию случайных Generic или Specific записей, которые встроены в код с помощью SchemaBuilder класса Avro

См. это репозиторий, например , который использует POJO, сгенерированный из схемы AVSC (что опять же можно сделать с помощью SchemaBuilder) в классе Java.

Даже класс, с которым вы связаны , использует файл схемы

0 голосов
/ 19 января 2019

Я бы просто использовал Podam http://mtedone.github.io/podam/ для генерации POJO и затем просто выводил их в Avro, используя библиотеку Java Avro https://avro.apache.org/docs/1.8.1/gettingstartedjava.html#Serializing

0 голосов
/ 18 января 2019

Так что лично я, вероятно, использовал бы Avro4s (https://github.com/sksamuel/avro4s) в сочетании со скалярными проверками (https://www.scalacheck.org) Gen) для моделирования таких тестов.

Вы можете использовать scalacheck для генерации случайных экземпляров классов дел и avro4s для преобразования их в общие записи, извлечения их схем и т. Д. И т. Д.

Есть также avro-mocker https://github.com/speedment/avro-mocker, хотя я не знаю, как легко подключиться к коду.

...