使用节俭的 Flink



我在 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-thrift-via-kryo

我这样做是为了节俭TestStruct以及其中的所有节俭结构。(虽然我跳过了命名类型(。

此外,生成的节俭代码是用 Java 编写的,而 flink 应用程序是使用 scala 编写的。

我怎样才能让这个错误消失?因为我遇到了另一个错误,如果我传递我的 dataStream 以转换为该TestStruct,则缺少某些字段。我怀疑这是由于序列化问题?

实际上,到目前为止,您无法摆脱此警告,但由于以下原因,它也不是问题:

警告基本上只是说 Flink 的类型系统没有使用其任何内部序列化程序,而是将类型视为"泛型类型",这意味着它通过 Kryo 序列化。如果你关注了我的博客文章,这正是你想要的:使用 Kryo 通过 Thrift 进行序列化。可以使用调试器将断点设置为TBaseSerializer,以验证是否正在使用 Thrift。

至于缺少的字段,我怀疑这是在(平面(映射运算符转换为您的TestStruct期间发生的,并且可能不是在用于将此结构传递给下一个运算符的序列化中。您应该验证这些字段丢失的位置 - 如果您有此可重现字段,则您喜欢的 IDE 的调试器中的断点应该可以帮助您找到原因。

相关内容

  • 没有找到相关文章

最新更新