AVRO序列化异常UTF8\String

问题描述 投票:0回答:1

我在不同的服务上有一个 kafka 生产者和消费者,消费者代码已推出并且工作正常,然后今天我推出了生产者端更改并在消费者上获得序列化异常。我使用融合的 AVRO 模式注册表服务器,直到今天它也一直运行良好。

org.apache.kafka.common.errors.SerializationException: Error deserializing Avro message for id 59
Caused by: java.lang.ClassCastException: class org.apache.avro.util.Utf8 cannot be cast to class java.lang.String (org.apache.avro.util.Utf8 is in unnamed module of loader org.apache.catalina.loader.ParallelWebappClassLoader @77bd7fe7; java.lang.String is in module java.base of loader 'bootstrap')
    at com.mydev.ret.lib.avro.mark.put(Mark.java:132)

作为此过程的一部分,架构已更改,但这并不是第一次发生这种情况,重要的是我们在迁移到 avro 1.9.1 和 kafka-avro-serializer-6.0.0 后

任何想法,看到字符串和 UTF 问题让我觉得生产者和消费者之间可能存在工件不匹配。

apache-kafka kafka-consumer-api avro
1个回答
0
投票

当将 DataStream 转换为 Table 时,我在 Flink 中遇到了类似的错误。在互联网上搜索发现这个问题尚未得到解答,但是@mrmannione 在他的评论中建议添加

 <stringType>String</stringType>

它解决了我的问题,所以我将其留在这里供其他人使用 pom.xml 中的使用示例

  <build>
    <plugins>
        <plugin>
            <groupId>org.apache.avro</groupId>
            <artifactId>avro-maven-plugin</artifactId>
            <version>1.10.2</version>
            <executions>
                <execution>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>schema</goal>
                    </goals>
                    <configuration>
                        <sourceDirectory>${project.basedir}/src/main/resources/schema</sourceDirectory>
                        <outputDirectory>target/generated-sources/</outputDirectory>
                        <stringType>String</stringType>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
© www.soinside.com 2019 - 2024. All rights reserved.