我在flink应用程序中看到一些关于我的节俭课程的日志:
2020-06-01 14:31:28 INFO TypeExtractor:1885 - Class class com.test.TestStruct contains custom serialization methods we do not call, so it cannot be used as a POJO type and must be processed as GenericType. Please read the Flink documentation on "Data Types & Serialization" for details of the effect on performance.
所以我按照这里的说明:
https://flink.apache.org/news/2020/04/15/flink-serialization-tuning-vol-1.html#apache-克里奥节俭酒店
我这样做是为了节约 TestStruct
以及其中所有的节俭结构我跳过了命名类型)。
另外,生成的节俭代码是用java编写的,而flink应用程序是用scala编写的。
我怎样才能让错误消失?因为我得到了另一个错误,如果我传递我的数据流来转换成它 TestStruct
,缺少某些字段。我怀疑这是因为序列化问题?
1条答案
按热度按时间czfnxgou1#
实际上,到目前为止,您无法摆脱此警告,但这也不是问题,原因如下:
警告基本上只是说flink的类型系统没有使用任何内部序列化程序,而是将该类型视为“泛型类型”,这意味着它是通过kryo序列化的。如果你关注我的博客文章,这正是你想要的:使用kryo通过节俭序列化。可以使用调试器将断点设置为
TBaseSerializer
验证是否使用了节俭。至于缺少的字段,我怀疑这是在转换为
TestStruct
在(平面)Map运算符中,可能不在用于将此结构传递给下一个运算符的序列化中。您应该验证这些字段丢失的位置—如果您有这个可复制的字段,那么您最喜欢的ide的调试器中的断点应该可以帮助您找到原因。