最终自己在 maven-shade-plugin的方向上有了突破
对“Error creating shaded jar SubmissionPublisher”的报错,网上并没有找到什么有用的信息

但尝试升级 maven-shade-plugin 版本3.2.0 -> 3.2.4 之后可以解决














在 2021-01-07 20:55:14,"Dacheng" <dyb0...@163.com> 写道:
>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
>
>
>谢谢

回复