Hi,

大家好,


降级avro遇到的问题
在1.12官方文档里提到avro目前使用1.10,但是可以按需降级到1.8.2
https://ci.apache.org/projects/flink/flink-docs-release-1.12/release-notes/flink-1.12.html#upgrade-to-avro-version-1100-from-182-flink-18192
我这边在尝试降级时,遇到了下面的问题


1. 如果直接依赖1.8.2 会导致 flink-avro里的 AvroSchemaConverter#nullableSchema 报错
java.lang.NoSuchMethodError: org.apache.avro.Schema.isNullable()Z
        at 
org.apache.flink.formats.avro.typeutils.AvroSchemaConverter.nullableSchema(AvroSchemaConverter.java:448)
我对比了一下,Avro 1.8.2和1.10.0,发现在1.8.2版本里就是没有Schema.isNullable()这个方法


2. 为了解决问题 1,我尝试使用maven shade plugin,把org.apache.avro这个依赖进行relocate
pom为 https://paste.ubuntu.com/p/SMYHy66bc6/
但是报错
[ERROR] Failed to execute goal 
org.apache.maven.plugins:maven-shade-plugin:3.2.0:shade (shade-deps) on project 
leyan-flink: Error creating shaded jar: Problem shading JAR 
/Users/dongzhi/.m2/repository/org/glassfish/jersey/core/jersey-common/2.30/jersey-common-2.30.jar
 entry 
META-INF/versions/11/org/glassfish/jersey/internal/jsr166/SubmissionPublisher$1.class:
 org.apache.maven.plugin.MojoExecutionException: Error in ASM processing class 
META-INF/versions/11/org/glassfish/jersey/internal/jsr166/SubmissionPublisher$1.class:
 UnsupportedOperationException -> [Help 1]
[ERROR]
这个暂时没找到解决方案。因此求助社区


降级avro的原因  flink-sql集成hive时遇到了问题
另,我之前使用avro 1.10没问题
但是在尝试引入hive依赖,在SQL使用hive的内置函数时,依赖项为
flink-avro-confluent-registry-1.12.0
flink-connector-hive_2.11-1.12.0(provided)
hive-exec 2.3.4 (provided)
hadoop-mapreduce-client-core 2.6.0-cdh5.13.3 <= 引入这个依赖是因为遇到了和  
http://apache-flink.147419.n8.nabble.com/Flink-td7866.html  相同的问题
在flink/lib下的额外jar包为
flink-sql-connector-hive-2.3.6_2.11-1.12.0.jar
hadoop-mapreduce-client-core-2.6.0-cdh5.13.3.jar
遇到了和 https://github.com/confluentinc/schema-registry/issues/1432 
类似的报错。因此尝试降级avro到1.8.2
java.lang.NoSuchFieldError: FACTORY
        at org.apache.avro.Schemas.toString(Schemas.java:36) 
~[trade-event.jar:1.12.0] 
但是整个项目使用 mvn dependency:tree分析,没有任何地方使用 avro 1.8.2。
flink应用的发布方式是on-yarn per-job;线上CDH集群使用的avro版本比较旧,不知道是不是因为这个问题导致哪里使用了avro 1.8.2


谢谢

回复