Как записать данные в формате Avro в Kafka из Flink?

#scala #apache-kafka #apache-flink #avro

#scala #apache-kafka #apache-flink #авро

Вопрос:

Для чтения Avro данных из Kafka у нас есть AvroDeserializationSchema . Но как насчет записи?

Ответ №1:

Есть AvroRowSerializationSchema который можно использовать для сериализации Rows . Если вам нужно сериализовать определенный тип, то я бы предложил реализовать вашу собственную схему, поскольку Flink на данный момент не предлагает никаких других Avro SerializationSchemas .

Комментарии:

1. Да, я видел эту ошибку во время выполнения: «Вызвано: java.lang. ClassCastException: MyType не может быть приведен к org.apache. flink.types.Row», хотя new AvroRowSerializationSchema(MyType.class) компилируется нормально. Есть ли способ заставить MyType работать с AvroRowSerializationSchema ? Я рассмотрю свой собственный SerializationSchemas в качестве последнего средства. Я все еще изучаю Flink, и типы данных не являются окончательными и часто меняются. Я не хочу обновлять свой SerializationSchemas каждый раз, когда меняю типы данных. Я бы предпочел использовать универсальное решение, которое автоматически обрабатывает любые типы данных.

2. Итак, вы можете попробовать JSON string для достижения гибкой модификации структуры в целях разработки.