使用registerTypeWithKryoSerializer

时间:2019-01-19 10:12:06

标签: apache-flink flink-streaming

我想建议您可以对DOC在线wrt序列化做一个可能的快速改进。 实际上,您在实现和文档方面都做得非常出色。 flink自动理解如何最好地序列化对象的方式非常聪明而且功能强大。

在开发将利用Flink的实时分析项目时,我遇到了一个问题,该问题与缺少文档而不是与flink有关。 我想在此建议进行修改,因为将来可能会浪费数小时的其他人:)

我有几个需要自定义序列化程序的类。我创建了Kryo序列化器,并使用registerTypeWithKryoSerializer插入了这些序列化器。 当前文档中尚不清楚的是,由于其中一些是POJO,因此Flink宁愿使用GenericType而不是GenericType,后者然后使用我的kryo序列化程序。 一旦了解,经过几个小时的深度调试,我就确保不再使用POJO,然后突然使用了我的序列化器。 因此,一方面,您可以考虑始终偏爱自定义序列化程序而不是POJO。但是在短期内,我只是建议修改文档。

让我知道您的想法,并为这项出色的工作表示祝贺。 在以前的项目中,我们确实使用了风暴流或火花流,但是Flink在实时流分析方面遥遥领先。

谢谢并继续努力!

1 个答案:

答案 0 :(得分:0)

因此,当前的快速解决方法是确保您的对象不是POJO。 在其他情况下,它们不会通过使用Kryo并查看您的自定义序列化程序的GenericType进行序列化。

遇到此类问题时,调试非常有用的是: env.getConfig()。disableGenericTypes();

这可以停止任务启动,但允许您检查使用了哪种类型的序列化程序和HintType。