Apache flink Flink on纱线意外块数据错误

Apache flink Flink on纱线意外块数据错误,apache-flink,yarn,amazon-emr,Apache Flink,Yarn,Amazon Emr,我有一个Flink应用程序,它使用Kafka集群的数据并运行SQL数据转换。我在EMR上运行这个应用程序,当我使用Java-jar选项运行时,应用程序按预期运行 但是,当使用命令flink run-m warn cluster-yn 2-yjm 1g-ytm 2g arg1 arg2运行纱线时 应用程序因堆栈下跟踪而失败 Caused by: org.apache.flink.runtime.client.JobExecutionException: Job execution failed.

我有一个Flink应用程序,它使用Kafka集群的数据并运行SQL数据转换。我在EMR上运行这个应用程序,当我使用Java-jar选项运行时,应用程序按预期运行

但是,当使用命令flink run-m warn cluster-yn 2-yjm 1g-ytm 2g arg1 arg2运行纱线时

应用程序因堆栈下跟踪而失败

Caused by: org.apache.flink.runtime.client.JobExecutionException: Job execution failed.
    at org.apache.flink.runtime.jobmaster.JobResult.toJobExecutionResult(JobResult.java:146)
    at org.apache.flink.client.program.rest.RestClusterClient.submitJob(RestClusterClient.java:265)
    ... 36 more
Caused by: org.apache.flink.streaming.runtime.tasks.StreamTaskException: Cannot instantiate user function.
    at org.apache.flink.streaming.api.graph.StreamConfig.getStreamOperator(StreamConfig.java:239)
    at org.apache.flink.streaming.runtime.tasks.OperatorChain.<init>(OperatorChain.java:104)
    at org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:267)
    at org.apache.flink.runtime.taskmanager.Task.run(Task.java:711)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.io.StreamCorruptedException: unexpected block data
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1586)
    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2286)
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2166)
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2068)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1572)
    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2286)
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2166)
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2068)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1572)
    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2286)
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2166)
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2068)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1572)
    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2286)
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2210)
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2068)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1572)
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:430)
    at org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:566)
    at org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:552)
    at org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:540)
    at org.apache.flink.util.InstantiationUtil.readObjectFromConfig(InstantiationUtil.java:501)
    at org.apache.flink.streaming.api.graph.StreamConfig.getStreamOperator(StreamConfig.java:224)
原因:org.apache.flink.runtime.client.JobExecutionException:作业执行失败。
位于org.apache.flink.runtime.jobmaster.JobResult.toJobExecutionResult(JobResult.java:146)
位于org.apache.flink.client.program.rest.RestClusterClient.submitJob(RestClusterClient.java:265)
... 36多
原因:org.apache.flink.streaming.runtime.tasks.StreamTaskException:无法实例化用户函数。
位于org.apache.flink.streaming.api.graph.StreamConfig.getStreamOperator(StreamConfig.java:239)
位于org.apache.flink.streaming.runtime.tasks.OperatorChain.(OperatorChain.java:104)
位于org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:267)
位于org.apache.flink.runtime.taskmanager.Task.run(Task.java:711)
运行(Thread.java:748)
原因:java.io.StreamCorruptedException:意外的块数据
位于java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1586)
位于java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2286)
位于java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2166)
位于java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2068)
位于java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1572)
位于java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2286)
位于java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2166)
位于java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2068)
位于java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1572)
位于java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2286)
位于java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2166)
位于java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2068)
位于java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1572)
位于java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2286)
位于java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2210)
位于java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2068)
位于java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1572)
位于java.io.ObjectInputStream.readObject(ObjectInputStream.java:430)
位于org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:566)
位于org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:552)
位于org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:540)
位于org.apache.flink.util.InstantiationUtil.readObjectFromConfig(InstantiationUtil.java:501)
位于org.apache.flink.streaming.api.graph.StreamConfig.getStreamOperator(StreamConfig.java:224)
更新:

这个问题解决了。根本原因是Flink的类加载器。我们最初使用的是Springboot maven插件。我们将其更改为maven shade插件,解决了这个问题

参考:

您使用的是哪种Flink版本?您确定在群集上使用相同的版本吗


此类(反)序列化问题通常与用于序列化和反序列化的不同版本有关。

您的代码在本地环境或ide中工作得好吗?是的,在本地环境中,一切正常。仅在群集环境中失败看起来您的CLI命令(
flink run-m warn cluster…
)被屏蔽,请使用转义进行编辑,以便所有参数都可见,谢谢。