Kafka库和Flink的反向类加载方法不兼容

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

Kafka库和Flink的反向类加载方法不兼容

aven.wu
报错如下
cannot assign instance of org.apache.commons.collections.map.LinkedMap to field org.apache.flink.streaming.connectors.kafka.FlinkKafkaConsumerBase.pendingOffsetsToCommit of type org.apache.commons.collections.map.LinkedMap in instance of org.apache.flink.streaming.connectors.kafka.FlinkKafkaConsumer010

修改flink-conf.yaml
classloader.resolve-order: parent-first

哪位大佬能解释一下这个反向类加载是什么意思?

发送自Aven.wu

Reply | Threaded
Open this post in threaded view
|

回复:Kafka库和Flink的反向类加载方法不兼容

Cayden chen
parent  first就是先加载环境的jar包,再加载用户的jar包(就是自己写的flink程序),children  first就是反过来。flink默认配置是chikdren  first,建议不要动这个配置。而是检查一下自己的flink程序的pom依赖和flink  lib下面的jar包有没有冲突





---原始邮件---
发件人: "aven.wu"<[hidden email]&gt;
发送时间: 2019年11月23日(星期六) 下午4:57
收件人: "[hidden email]"<[hidden email]&gt;;
主题: Kafka库和Flink的反向类加载方法不兼容


报错如下
cannot assign instance of org.apache.commons.collections.map.LinkedMap to field org.apache.flink.streaming.connectors.kafka.FlinkKafkaConsumerBase.pendingOffsetsToCommit of type org.apache.commons.collections.map.LinkedMap in instance of org.apache.flink.streaming.connectors.kafka.FlinkKafkaConsumer010

修改flink-conf.yaml
classloader.resolve-order: parent-first

哪位大佬能解释一下这个反向类加载是什么意思?

发送自Aven.wu
Reply | Threaded
Open this post in threaded view
|

Re:回复:Kafka库和Flink的反向类加载方法不兼容

aven.wu
感谢回答
 出现这个问题也是因为我把flink connect 的jar包打成lib 放在flink 和 hadoop 的classpath下面(缩小打出来的应用程序包),出现这个报错。我大概理解这个class加载的意思了。
在 2019-11-23 17:16:51,"1193216154" <[hidden email]> 写道:

>parent&nbsp; first就是先加载环境的jar包,再加载用户的jar包(就是自己写的flink程序),children&nbsp; first就是反过来。flink默认配置是chikdren&nbsp; first,建议不要动这个配置。而是检查一下自己的flink程序的pom依赖和flink&nbsp; lib下面的jar包有没有冲突
>
>
>
>
>
>---原始邮件---
>发件人: "aven.wu"<[hidden email]&gt;
>发送时间: 2019年11月23日(星期六) 下午4:57
>收件人: "[hidden email]"<[hidden email]&gt;;
>主题: Kafka库和Flink的反向类加载方法不兼容
>
>
>报错如下
>cannot assign instance of org.apache.commons.collections.map.LinkedMap to field org.apache.flink.streaming.connectors.kafka.FlinkKafkaConsumerBase.pendingOffsetsToCommit of type org.apache.commons.collections.map.LinkedMap in instance of org.apache.flink.streaming.connectors.kafka.FlinkKafkaConsumer010
>
>修改flink-conf.yaml
>classloader.resolve-order: parent-first
>
>哪位大佬能解释一下这个反向类加载是什么意思?
>
>发送自Aven.wu
Reply | Threaded
Open this post in threaded view
|

Re: 回复:Kafka库和Flink的反向类加载方法不兼容

tison
最近我在梳理这部分的代码,刚好看到这个邮件就敦促这写了这篇小短文 https://zhuanlan.zhihu.com/p/93374622
简要介绍了我理解的
FLINK 依赖上传和加载的过程

过程中发现官方文档中有一节
https://ci.apache.org/projects/flink/flink-docs-stable/monitoring/debugging_classloading.html
 已经把很多设计原则和坑都列出来了,不妨一看

Best,
tison.


巫旭阳 <[hidden email]> 于2019年11月23日周六 下午9:19写道:

> 感谢回答
>  出现这个问题也是因为我把flink connect 的jar包打成lib 放在flink 和 hadoop
> 的classpath下面(缩小打出来的应用程序包),出现这个报错。我大概理解这个class加载的意思了。
> 在 2019-11-23 17:16:51,"1193216154" <[hidden email]> 写道:
> >parent&nbsp; first就是先加载环境的jar包,再加载用户的jar包(就是自己写的flink程序),children&nbsp;
> first就是反过来。flink默认配置是chikdren&nbsp;
> first,建议不要动这个配置。而是检查一下自己的flink程序的pom依赖和flink&nbsp; lib下面的jar包有没有冲突
> >
> >
> >
> >
> >
> >---原始邮件---
> >发件人: "aven.wu"<[hidden email]&gt;
> >发送时间: 2019年11月23日(星期六) 下午4:57
> >收件人: "[hidden email]"<[hidden email]&gt;;
> >主题: Kafka库和Flink的反向类加载方法不兼容
> >
> >
> >报错如下
> >cannot assign instance of org.apache.commons.collections.map.LinkedMap to
> field
> org.apache.flink.streaming.connectors.kafka.FlinkKafkaConsumerBase.pendingOffsetsToCommit
> of type org.apache.commons.collections.map.LinkedMap in instance of
> org.apache.flink.streaming.connectors.kafka.FlinkKafkaConsumer010
> >
> >修改flink-conf.yaml
> >classloader.resolve-order: parent-first
> >
> >哪位大佬能解释一下这个反向类加载是什么意思?
> >
> >发送自Aven.wu
>