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 谢谢 |
最终自己在 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 > > >谢谢 |
Free forum by Nabble | Edit this page |