Hi, Hao Sun

For debugging the `ClassNotFoundException`, maybe the Arthas[1] tool can
help.

[1] Arthas <https://github.com/alibaba/arthas>:
https://github.com/alibaba/arthas

Hao Sun <ha...@zendesk.com> 于2019年1月3日周四 下午10:08写道:

>
> I am on Flink 1.7.1 and K8S.
> I said "suddenly" because my program worked fine until I added a new
> MapFunction.
> I do not know the details, but I think I know what is causing it
>
> === Start of Program ===
> val stream: DataStream[MaxwellEvent] = <get the stream>
> steam.map(new ProblemFunction()) will cause the issue
> class ProblemFunction(stringParam: String)(implicit datadog:
> DatadogClient) extends MapFunction[MaxwellEvent, MaxwellEvent]
> === End of Program ===
>
> I think the class taking curry params caused the issue, after I give up on
> the curry format, the error disappeared.
>
> I am using https://github.com/sbt/sbt-assembly to assemble the fat jar.
> There might be some issue, or config issue with that as well.
>
> I am reading this article, it is a good start for me as well
>
> https://heapanalytics.com/blog/engineering/missing-scala-class-noclassdeffounderror
>
>
> Hao Sun
> Team Lead
> 1019 Market St. 7F
> San Francisco, CA 94103
>
>
> On Thu, Jan 3, 2019 at 1:08 AM Timo Walther <twal...@apache.org> wrote:
>
>> Hi Hao,
>>
>> which Flink version are you using? What do you mean with "suddenly", did
>> it work before?
>>
>> Regards,
>> Timo
>>
>>
>> Am 03.01.19 um 07:13 schrieb Hao Sun:
>>
>> Yep, javap shows the class is there, but FlinkUserCodeClassLoaders
>> somehow could not find it suddenly
>>
>> javap -cp /opt/flink/lib/zendesk-fps-core-assembly-0.1.0.jar
>> 'com.zendesk.fraudprevention.examples.ConnectedStreams$$anon$90$$anon$45'
>> Compiled from "ConnectedStreams.scala"
>> public final class
>> com.zendesk.fraudprevention.examples.ConnectedStreams$$anon$90$$anon$45
>> extends
>> org.apache.flink.api.scala.typeutils.CaseClassSerializer<com.zendesk.fraudprevention.datatypes.MaxwellEvent>
>> {
>> public com.zendesk.fraudprevention.datatypes.MaxwellEvent
>> createInstance(java.lang.Object[]);
>> public
>> org.apache.flink.api.scala.typeutils.CaseClassSerializer<com.zendesk.fraudprevention.datatypes.MaxwellEvent>
>> createSerializerInstance(java.lang.Class<com.zendesk.fraudprevention.datatypes.MaxwellEvent>,
>> org.apache.flink.api.common.typeutils.TypeSerializer<?>[]);
>> public org.apache.flink.api.java.typeutils.runtime.TupleSerializerBase
>> createSerializerInstance(java.lang.Class,
>> org.apache.flink.api.common.typeutils.TypeSerializer[]);
>> public java.lang.Object createInstance(java.lang.Object[]);
>> public
>> com.zendesk.fraudprevention.examples.ConnectedStreams$$anon$90$$anon$45(com.zendesk.fraudprevention.examples.ConnectedStreams$$anon$90,
>> org.apache.flink.api.common.typeutils.TypeSerializer[]);
>> }
>>
>> Hao Sun
>> Team Lead
>> 1019 Market St. 7F
>> San Francisco, CA 94103
>>
>>
>> On Wed, Jan 2, 2019 at 6:04 PM qi luo <luoqi...@gmail.com> wrote:
>>
>>> Hi Hao,
>>>
>>> Since Flink is using Child-First class loader, you may try search for
>>> the class 
>>> "*com.zendesk.fraudprevention.examples.ConnectedStreams$$anon$90$$anon$45”
>>> in your fat JAR. Is that an inner class?*
>>>
>>> *Best,*
>>> *Qi*
>>>
>>> On Jan 3, 2019, at 7:01 AM, Hao Sun <ha...@zendesk.com> wrote:
>>>
>>> Hi,
>>>
>>> I am wondering if there are any protips to figure out what class is not
>>> found?
>>>
>>> ===== Logs ====
>>> org.apache.flink.streaming.runtime.tasks.StreamTaskException: Could not
>>> instantiate chained outputs.
>>> at
>>> org.apache.flink.streaming.api.graph.StreamConfig.getChainedOutputs(StreamConfig.java:324)
>>> at
>>> org.apache.flink.streaming.runtime.tasks.OperatorChain.createOutputCollector(OperatorChain.java:292)
>>> at org.apache.flink.streaming.runtime.tasks.OperatorChain.<init>(
>>> http://OperatorChain.java:133)
>>> at
>>> org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:267)
>>> at org.apache.flink.runtime.taskmanager.Task.run(Task.java:704)
>>> at java.lang.Thread.run(Thread.java:748)
>>> *Caused by: java.lang.ClassNotFoundException:
>>> com.zendesk.fraudprevention.examples.ConnectedStreams$$anon$90$$anon$45*
>>> at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
>>> at
>>> org.apache.flink.runtime.execution.librarycache.FlinkUserCodeClassLoaders$ChildFirstClassLoader.loadClass(FlinkUserCodeClassLoaders.java:129)
>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
>>> at java.lang.Class.forName0(Native Method)
>>> at java.lang.Class.forName(Class.java:348)
>>> at
>>> org.apache.flink.util.InstantiationUtil$ClassLoaderObjectInputStream.resolveClass(InstantiationUtil.java:77)
>>> at
>>> java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1866)
>>> at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1749)
>>> at
>>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2040)
>>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1571)
>>> at
>>> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2285)
>>> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2209)
>>> at
>>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2067)
>>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1571)
>>> at
>>> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2285)
>>> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2209)
>>> at
>>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2067)
>>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1571)
>>> at java.io.ObjectInputStream.readObject(ObjectInputStream.java:431)
>>> at java.util.ArrayList.readObject(ArrayList.java:797)
>>> at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source)
>>> at
>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>> at java.lang.reflect.Method.invoke(Method.java:498)
>>> at
>>> java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1158)
>>> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2176)
>>> at
>>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2067)
>>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1571)
>>> at java.io.ObjectInputStream.readObject(ObjectInputStream.java:431)
>>> at
>>> org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:524)
>>> at
>>> org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:510)
>>> at
>>> org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:498)
>>> at
>>> org.apache.flink.util.InstantiationUtil.readObjectFromConfig(InstantiationUtil.java:459)
>>> at
>>> org.apache.flink.streaming.api.graph.StreamConfig.getChainedOutputs(StreamConfig.java:321)
>>> ... 5 more
>>>
>>>
>>> Hao Sun
>>> Team Lead
>>> 1019 Market St. 7F
>>> San Francisco, CA 94103
>>>
>>>
>>>
>>

-- 
Blog:http://www.klion26.com
GTalk:qcx978132955
一切随心

Reply via email to