Flink1.12怎么降级avro到1.8.2?

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Flink1.12怎么降级avro到1.8.2?

Xi Shen
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


谢谢
Reply | Threaded
Open this post in threaded view
|

Re:Flink1.12怎么降级avro到1.8.2?

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

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














在 2021-01-07 20:55:14,"Dacheng" <[hidden email]> 写道:

>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
>
>
>谢谢