apache-flink - Apache Flink 1.4.2 com.esotericsoftware.kryo.KryoException: java.lang.UnsupportedOperationException
问题描述
使用 Apache Flink 1.4.2 我得到以下异常
com.esotericsoftware.kryo.KryoException: java.lang.UnsupportedOperationException
Serialization trace:
data (org.apache.flink.api.java.utils.ParameterTool)
parameterTool (com.test.event.configuration.JobConfiguration)
configuration (com.test.event.steps.PasswordChangedStep)
at com.esotericsoftware.kryo.serializers.ObjectField.read(ObjectField.java:125)
at com.esotericsoftware.kryo.serializers.FieldSerializer.read(FieldSerializer.java:528)
at com.esotericsoftware.kryo.Kryo.readObject(Kryo.java:679)
at com.esotericsoftware.kryo.serializers.ObjectField.read(ObjectField.java:106)
at com.esotericsoftware.kryo.serializers.FieldSerializer.read(FieldSerializer.java:528)
at com.esotericsoftware.kryo.Kryo.readObject(Kryo.java:679)
at com.esotericsoftware.kryo.serializers.ObjectField.read(ObjectField.java:106)
at com.esotericsoftware.kryo.serializers.FieldSerializer.read(FieldSerializer.java:528)
at com.esotericsoftware.kryo.Kryo.readClassAndObject(Kryo.java:761)
at org.apache.flink.api.java.typeutils.runtime.kryo.KryoSerializer.deserialize(KryoSerializer.java:249)
at org.apache.flink.contrib.streaming.state.RocksDBValueState.value(RocksDBValueState.java:83)
at com.test.event.transform.StateProcessFunction.processElement(StateProcessFunction.java:39)
at com.test.event.transform.StateProcessFunction.processElement(StateProcessFunction.java:1)
at org.apache.flink.streaming.api.operators.KeyedProcessOperator.processElement(KeyedProcessOperator.java:94)
at org.apache.flink.streaming.runtime.io.StreamInputProcessor.processInput(StreamInputProcessor.java:207)
at org.apache.flink.streaming.runtime.tasks.OneInputStreamTask.run(OneInputStreamTask.java:69)
at org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:264)
at org.apache.flink.runtime.taskmanager.Task.run(Task.java:718)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.UnsupportedOperationException
at java.util.Collections$UnmodifiableMap.put(Collections.java:1457)
at com.esotericsoftware.kryo.serializers.MapSerializer.read(MapSerializer.java:144)
at com.esotericsoftware.kryo.serializers.MapSerializer.read(MapSerializer.java:21)
at com.esotericsoftware.kryo.Kryo.readObject(Kryo.java:679)
at com.esotericsoftware.kryo.serializers.ObjectField.read(ObjectField.java:106)
... 18 more
不知道这意味着什么。其他人在使用流程功能(https://ci.apache.org/projects/flink/flink-docs-release-1.5/dev/stream/operators/process_function.html)时得到相同的行为?
解决方案
原来原因是由于使用 ParameterTool 作为状态的一部分,我们将其取出并仅保留所需的配置部分(一些 int 值)并且它现在可以工作
推荐阅读
- unity3d - 至于区域内的随机位置
- r - 如何确定所选点是在陆地上还是水上?
- android - Android-10 DeepLink 不工作,但在 android 10 版本以下工作
- c# - 时间格式识别与转换
- html - 我正在使用自定义 CSS 在我的流媒体软件中编辑网站的字体,但我无法获得正确的格式来概述字体
- wso2 - WSO2 身份服务器 -javax.mail.MessagingException:501 5.5.4 无效地址
- java - 如何在android studio的片段中添加admob广告?
- amazon-web-services - Route53 设置延迟记录
- python - 使用 pytesseract 进行 OCR
- excel - 获取不等于某个值的列中的最后一个值