是否可以配置Flink飞行前类型序列化扫描?

时间:2019-06-03 22:01:29

标签: apache-flink flink-streaming

Flink在Flink应用程序(https://ci.apache.org/projects/flink/flink-docs-stable/dev/types_serialization.html)的飞行前阶段执行重要的扫描。创建源,运算符和接收器的行为使Flink扫描给定流流的拓扑中使用的对象的数据类型,因为Flink显然将尝试基于此信息来优化作业。

此扫描是否可配置?我可以关闭它,仅强制Flink仅使用Kryo序列化,而不需要或不使用任何此扫描信息吗?

我在自动生成的专有库中有一个很大的,深层嵌套的类,Flink扫描它时似乎陷入了一个很大的无穷循环,运行了几个小时后会导致内存不足错误(应用程序永远不会实际上通过env.execute()启动,即使我大大增加了堆大小也是如此)。该类具有许多循环引用,即class及其子类包含对相同类型其他类的引用,这可能有问题吗?

1 个答案:

答案 0 :(得分:0)

您可以尝试

env.getConfig().addDefaultKryoSerializer(clazz, serializer)

其中序列化器是custom serializer

您可以通过以下方式强制Kryo

env.getConfig().enableForceKryo();

有关更多信息,请参见serialization of pojo types