Проблема создания сериализованного объекта Avro через kafka-avro-console -roduction - PullRequest
0 голосов
/ 25 февраля 2020

Я создаю сообщение , используя двоичный файл kafka-avro-console -roduction , выполнив:

kafka-avro-console-producer --broker-list broker:9092 --topic example-topic --property schema.registry.url='http://schema-registry:8081 --property value.schema='{"type": "record","name": "test","fields": [{"name": "before", "type": ["null", {"type": "record", "name": "columns", "fields":[{"name": "name", "type": "string"}]}],"default": "null"},{"name": "after", "type": ["null", "columns"],"default": "null"}]}'
{"before": null,"after": {"name": "John"}}'

отправив следующее сообщение :

{"before": null,"after": {"name": "John"}}

и применив следующую Avro-схему :

{
    "type": "record",
    "name": "test",
    "fields": [{
        "name": "before",
        "type": ["null", {
            "type": "record",
            "name": "columns",
            "fields": [{
                "name": "name",
                "type": "string"
            }]
        }],
        "default": "null"
    }, {
        "name": "after",
        "type": ["null", "columns"],
        "default": "null"
    }]
}

ошибка Я получаю взамен следующее:

Caused by: org.apache.avro.AvroTypeException: Unknown union branch name
    at org.apache.avro.io.JsonDecoder.readIndex(JsonDecoder.java:445)
    at org.apache.avro.io.ResolvingDecoder.doAction(ResolvingDecoder.java:290)
    at org.apache.avro.io.parsing.Parser.advance(Parser.java:88)
    at org.apache.avro.io.ResolvingDecoder.readIndex(ResolvingDecoder.java:267)
    at org.apache.avro.generic.GenericDatumReader.readWithoutConversion(GenericDatumReader.java:178)
    at org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:152)
    at org.apache.avro.generic.GenericDatumReader.readField(GenericDatumReader.java:240)
    at org.apache.avro.generic.GenericDatumReader.readRecord(GenericDatumReader.java:230)
    at org.apache.avro.generic.GenericDatumReader.readWithoutConversion(GenericDatumReader.java:174)
    at org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:152)
    at org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:144)
    at io.confluent.kafka.formatter.AvroMessageReader.jsonToAvro(AvroMessageReader.java:213)
    at io.confluent.kafka.formatter.AvroMessageReader.readMessage(AvroMessageReader.java:180)
    at kafka.tools.ConsoleProducer$.main(ConsoleProducer.scala:55)
    at kafka.tools.ConsoleProducer.main(ConsoleProducer.scala)

Для тех из вас, кто хочет go глубже в кроличью нору, я делаю интеграцию между Oracle Золотые Ворота и Apache Кафка с помощью разъема Oracle Золотые Ворота Big Data. В настоящее время у меня возникают проблемы с эквивалентной моделью, описанной здесь:

https://www.ateam-oracle.com/oracle-goldengate-big-data-adapter-apache-kafka-producer

При попытке применить схему , описанную в выше веб-страницы, соответствующей ее модели (и после завершения модели JSON), я получаю ту же ошибку , что и ту, которую я получаю с моделью и схемой в вопросе.


Спасибо всем большое.

1 Ответ

1 голос
/ 26 февраля 2020

Это проблема

"type": ["null", "columns"]

Невозможно вернуться к другим типам записей. Вам нужно будет расширить это, как вы сделали для другого поля

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...