Создание схемы Avro без класса (-Object)

В данный момент я сериализую класс в схему avsc. Это работает довольно хорошо:

DatasetDescriptor desc = new DatasetDescriptor.Builder().schema(ClassName.class).build();

Но мне нужно создать AVSC без какого-либо данного класса динамически. Это возможно?

1 ответ

Решение

Это возможно. Вы можете создать схему на лету или прочитать схему avro. Следующий код использует жестко закодированную схему, но в основном это та же идея

Schema schema = new Schema.Parser().parse("{\"namespace\": \"example.avro\",\n" +
        " \"type\": \"record\",\n" +
        " \"name\": \"User\",\n" +
        " \"fields\": [\n" +
        "     {\"name\": \"name\", \"type\": \"string\"},\n" +
        "     {\"name\": \"favorite_number\",  \"type\": [\"int\", \"null\"]},\n" +
        "     {\"name\": \"favorite_color\", \"type\": [\"string\", \"null\"]}\n" +
        " ]\n" +
        "}");
DatasetDescriptor desc = new DatasetDescriptor.Builder().schema(schema).build();
Другие вопросы по тегам